Yanıtlar:
Tupler konumlarına göre konumlandırılır: ilk grubun ilk maddesi ikinci grubun ilk maddesi ile karşılaştırılır; eğer eşit değilse (yani birincisi ikincisinden daha büyük veya daha küçükse) bu karşılaştırmanın sonucudur, aksi takdirde ikinci madde, daha sonra üçüncü ve daha fazlası dikkate alınır.
Bkz. Ortak Dizi İşlemleri :
Aynı tipteki diziler de karşılaştırmaları destekler. Özellikle, tuples ve listeler karşılık gelen öğeler karşılaştırılarak sözlükbilimsel olarak karşılaştırılır. Bu, eşit karşılaştırmak için her öğenin eşit karşılaştırması ve iki dizinin aynı türde ve aynı uzunlukta olması gerektiği anlamına gelir.
Ayrıca daha fazla ayrıntı için Değer Karşılaştırmaları :
Yerleşik koleksiyonlar arasındaki sözlükbilimsel karşılaştırma aşağıdaki gibi çalışır:
- İki koleksiyonun eşit karşılaştırması için, aynı türde olmalı, aynı uzunlukta olmalı ve her bir karşılık gelen öğe çifti eşit karşılaştırmalıdır (örneğin,
[1,2] == (1,2)
tür aynı olmadığından yanlıştır).- Sipariş karşılaştırmasını destekleyen koleksiyonlar, ilk eşit olmayan öğeleriyle aynı şekilde sıralanır (örneğin,
[1,2,x] <= [1,2,y]
ile aynı değere sahiptirx <= y
). Karşılık gelen bir öğe yoksa, önce daha kısa olan koleksiyon sipariş edilir (örneğin,[1,2] < [1,2,3]
doğrudur).
Eşit değilse, diziler ilk farklı elemanları ile aynı sırada sıralanır. Örneğin, cmp ([1,2, x], [1,2, y]) cmp (x, y) ile aynı döndürür. İlgili eleman mevcut değilse, daha kısa sekans daha küçük kabul edilir (örneğin, [1,2] <[1,2,3] True değerini döndürür).
Not 1 : <
ve >
"küçüktür" ve "büyüktür" anlamına gelmez, "önce" ve "sonra": yani (0, 1) "öncedir" (1, 0).
Not 2 : Tupler , uzunluklarına göre n boyutlu bir alanda vektörler olarak düşünülmemelidir .
Not 3 : /programming/36911617/python-2-tuple-comparison sorusuna atıfta bulunarak, sadece birincinin herhangi bir elemanı karşılık gelen değerden büyükse bir demetin diğerinden "daha büyük" olduğunu düşünmeyin saniyede bir tane.
x = tuple([0 for _ in range(n)])
ve aynısını y için yapın. N = 100, 1000, 10.000 ve 100.000'i ayarlamak ve çalıştırmak %timeit x==y
, sırasıyla 0, n, 5, 4,6, 43,9 ve 443 mikrosaniye zamanlama değerleri verdi; bu, pratik olarak alabileceğiniz kadar O (n) 'ye yakındır.
<
ve >
"daha küçük sonra" ve "daha büyük sonra" anlamına gelmez ama "önce gelir" ve "sonra gelir": yani (0, 1)
"önce gelir"(1, 0)
Python belgelerine anlatmaya yapar.
Tuples ve listeler, karşılık gelen elemanların karşılaştırılması kullanılarak sözlükbilimsel olarak karşılaştırılır. Bu, eşit karşılaştırmak için her öğenin eşit karşılaştırması ve iki dizinin aynı tipte ve aynı uzunlukta olması gerektiği anlamına gelir.
Piton 2.5 belgelerine iyi açıklıyor.
Tuples ve listeler, karşılık gelen elemanların karşılaştırılması kullanılarak sözlükbilimsel olarak karşılaştırılır. Bu, eşit karşılaştırmak için her öğenin eşit karşılaştırması ve iki dizinin aynı tipte ve aynı uzunlukta olması gerektiği anlamına gelir.
Eşit değilse, diziler ilk farklı elemanları ile aynı sırada sıralanır. Örneğin, cmp ([1,2, x], [1,2, y]) cmp (x, y) ile aynı döndürür. Karşılık gelen eleman mevcut değilse, önce daha kısa sekans sipariş edilir (örneğin, [1,2] <[1,2,3]).
Ne yazık ki, bu sayfa daha yeni sürümler için belgelerde kaybolmuş gibi görünüyor.
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A, ord('A') #65
diğer elemanlar için aynı olan ASCII'ye dönüştürülür
Yani,
>> a>b # True
bunu dize arasında karşılaştırma olarak düşünebilirsiniz (Tam olarak, aslında)
aynı şey tamsayılar için de geçerlidir.
x = (1,2,2) # see it the string "123"
y = (1,2,3)
x > y # False
çünkü (1, 1'den büyük değildir, bir sonrakine git, 2, 2'den büyük değildir, bir sonraki 2'ye geçmek üçten azdır - eşsal olarak -)
Kilit nokta yukarıdaki cevapta belirtilmiştir
bunu bir eleman olarak düşünün, başka bir alfabetik olmayan eleman bir elemandan daha büyüktür ve bu durumda tüm grup elemanlarını bir dize olarak düşünün.
(1,2,3) > (1,2,2)
verirTrue
<
ve>
. Örneğin, olarak(0, 1) < (1, 0)
değerlendirirTrue
.