はじめに
プログラミングにおいては、2 つのリストが同じ要素を含んでいるかどうかを順序に関係なくチェックする必要がよくあります。これは、2 つのデータセットが同じ値を持っているかどうかをチェックしたり、関数が期待される出力を返しているかどうかを検証するなど、さまざまな状況で役立ちます。このチャレンジでは、2 つのリストが同じ内容を持っているかどうかをチェックする関数を書きます。
2 つのリストが同じ内容を持っているかどうかをチェックする
2 つのリストを引数として受け取り、それらが同じ内容を持っている場合はTrueを返し、そうでない場合はFalseを返す関数have_same_contents(a, b)を書きます。この関数は、2 つのリストが同じ要素を含んでいるかどうかを順序に関係なくチェックする必要があります。
この問題を解決するには、次の手順を辿ることができます。
- 両方のリストの組み合わせに
set()を使用して、一意の値を見つけます。 - 各リストの各一意の値の
count()を比較しながら、forループでそれらを反復処理します。 - どの要素についてもカウントが一致しない場合は
Falseを返し、そうでない場合はTrueを返します。
def have_same_contents(a, b):
for v in set(a + b):
if a.count(v)!= b.count(v):
return False
return True
have_same_contents([1, 2, 4], [2, 4, 1]) ## True
まとめ
このチャレンジでは、2 つのリストが同じ内容を持っているかどうかを順序に関係なくチェックする方法を学びました。set()関数を使用して一意の値を反復処理することで、両方のリストの各要素のcount()を比較して、同じ内容を持っているかどうかを判断することができます。