これよりも簡潔な方法で要素2つのリスト(たとえば、リスト1の要素がリスト2の要素よりも大きい)を比較するPythonの一般的な方法があるかどうかを知りたいです。
t1 = [1,1,0]
t2 = [2,2,1]
for I in range(len(t1)):
if t1[I] > t2[I]:
return False
前もって感謝します!
any()
orを使用all()
して、リスト内のいずれかの要素またはすべての要素に対して条件が成立するかどうかを (それぞれ) テストし、 と組み合わせzip
て 2 つのリストを結び付けます。たとえば、問題のコードは次のようにより簡潔に実装できます。
not any(x > y for x, y in zip(t1, t2))
=> True
または同等に、コメントで @squiguy が指摘するように:
all(x <= y for x, y in zip(t1, t2))
=> True
リスト (および一般的なシーケンス) は、必要に応じて、辞書順 (要素ごと) で比較されます。したがって、ループは次と同等です。
return not t1 > t2
もちろん、2 つのリストの長さが異なる場合、さまざまなケースで異なる処理が行われます (たとえば、コードが を返しIndexError
、もう一方が False を返す場合など)。しかし、実際には、そのような場合に何をしたいのかを正確に定義する必要があり、実際にそれらのテストをコーディングするのは簡単です.