だから私は、タプルの比較が辞書的に機能することを知っています:
タプルとリストは、対応する要素の比較を使用して辞書的に比較されます。これは、等しいと比較するには、各要素が等しい必要があり、2 つのシーケンスが同じ型で同じ長さでなければならないことを意味します。
等しくない場合、シーケンスは最初の異なる要素と同じ順序になります。たとえば、cmp([1,2,x], [1,2,y]) は cmp(x,y) と同じものを返します。対応する要素が存在しない場合は、短いシーケンスが最初に並べられます (たとえば、[1,2] < [1,2,3])。
だからこれから:
>>> a = (100, 0)
>>> b = (50, 50)
>>> a > b
True
しかし、2つのタプルのすべての要素を順番に比較したいので、機能的には(上記の値を使用して)に似たものが必要です:
>>> a > b
(True, False) #returned tuple containing each comparison
>>> all(a > b)
False
実際の例として、画面座標のようなものについて、何かが画面の「内側」(0,0) にあるかどうかを確認したいが、座標 > (0,0) のような比較を行った場合、x 座標が0 より大きいが、y 座標が小さい場合でも true が返されるため、この場合は必要ありません。
サブ質問/ディスカッションの一種として:
異なる値の2つのタプルを比較すると、そのような方法で返される理由がわかりません。いかなる種類のインデックスも与えられていないため、タプルを比較して得られる唯一のこと (同等性をテストしていない) は、タプルのある時点で、比較の 1 つが true または false の値をスローすることです。等しくない。それをどのように活用できますか?