1

これよりも簡潔な方法で要素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

前もって感謝します!

4

2 に答える 2

5

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
于 2013-08-28T21:17:31.433 に答える
2

リスト (および一般的なシーケンス) は、必要に応じて、辞書順 (要素ごと) で比較されます。したがって、ループは次と同等です。

return not t1 > t2

もちろん、2 つのリストの長さが異なる場合、さまざまなケースで異なる処理が行われます (たとえば、コードが を返しIndexError、もう一方が False を返す場合など)。しかし、実際には、そのような場合に何をしたいのかを正確に定義する必要があり、実際にそれらのテストをコーディングするのは簡単です.

于 2013-08-28T21:22:41.240 に答える