はじめに
Python では、あるリストが別のリストに含まれているかどうかを確認する必要がよくあります。これは少し厄介な場合があります。特に、リスト内の要素の順序が問題にならない場合には。このチャレンジでは、要素の順序に関係なく、あるリストの要素が別のリストに含まれているかどうかをチェックする関数を作成します。
リストの包含関係
2 つのリストを引数として受け取り、リストaのすべての要素がリストbに含まれている場合(要素の順序は問わない)にTrueを返す関数is_contained_in(a, b)を作成します。そうでない場合は、関数はFalseを返します。
この問題を解くには、次のアプローチを使用できます。
- リスト
aの各一意の値をループ処理します。 - 各値について、それがリスト
aに含まれる回数がリストbに含まれる回数よりも多いかどうかを確認します。 - リスト
aに含まれる回数がリストbに含まれる回数よりも多い値がある場合、Falseを返します。 - リスト
aのすべての値がリストbに少なくともリストaに含まれる回数と同じ回数で含まれている場合、Trueを返します。
def is_contained_in(a, b):
for v in set(a):
if a.count(v) > b.count(v):
return False
return True
is_contained_in([1, 4], [2, 4, 1]) ## True
まとめ
このチャレンジでは、あるリストが別のリストに含まれているかどうかを、要素の順序に関係なく確認する方法を学びました。2 つのリストを引数として受け取り、リストaのすべての要素がリストbに含まれている場合(要素の順序は問わない)にTrueを返す関数を作成しました。