Risposte:
Le tuple vengono confrontate posizione per posizione: il primo elemento della prima tupla viene confrontato con il primo elemento della seconda tupla; se non sono uguali (ovvero il primo è maggiore o minore del secondo), questo è il risultato del confronto, altrimenti viene considerato il secondo elemento, quindi il terzo e così via.
Vedi le operazioni di sequenza comuni :
Sequenze dello stesso tipo supportano anche confronti. In particolare, le tuple e gli elenchi vengono confrontati lessicograficamente confrontando gli elementi corrispondenti. Ciò significa che per confrontare uguale, ogni elemento deve confrontare uguale e le due sequenze devono essere dello stesso tipo e avere la stessa lunghezza.
Confronti di valore anche per ulteriori dettagli:
Il confronto lessicografico tra collezioni integrate funziona come segue:
- Affinché due raccolte siano uguali, devono essere dello stesso tipo, avere la stessa lunghezza e ogni coppia di elementi corrispondenti deve essere uguale (ad esempio,
[1,2] == (1,2)
è falso perché il tipo non è lo stesso).- Le raccolte che supportano il confronto degli ordini sono ordinate allo stesso modo dei loro primi elementi disuguali (ad esempio,
[1,2,x] <= [1,2,y]
hanno lo stesso valore dix <= y
). Se non esiste un elemento corrispondente, la raccolta più breve viene ordinata per prima (ad esempio,[1,2] < [1,2,3]
è vera).
Se non uguali, le sequenze sono ordinate allo stesso modo dei loro primi elementi diversi. Ad esempio, cmp ([1,2, x], [1,2, y]) restituisce lo stesso cmp (x, y). Se l'elemento corrispondente non esiste, la sequenza più breve viene considerata più piccola (ad esempio, [1,2] <[1,2,3] restituisce True).
Nota 1 : <
e >
non significa "più piccolo di" e "maggiore di" ma "è prima" e "è dopo": così (0, 1) "è prima" (1, 0).
Nota 2 : le tuple non devono essere considerate vettori in uno spazio n-dimensionale , rispetto alla loro lunghezza.
Nota 3 : riferendosi alla domanda /programming/36911617/python-2-tuple-comparison : non pensare che una tupla sia "maggiore" di un'altra solo se qualsiasi elemento del primo è maggiore del corrispondente uno nel secondo.
x = tuple([0 for _ in range(n)])
e fai lo stesso per y. L'impostazione di n = 100, 1000, 10.000 e 100.000 e in esecuzione ha %timeit x==y
dato valori di temporizzazione rispettivamente di 0,5, 4,6, 43,9 e 443 microsecondi, che è quasi il più vicino possibile a O (n).
<
e >
non significa "più piccolo di allora" e "più grande di" ma "viene prima" e "viene dopo": così (0, 1)
"viene prima"(1, 0)
La documentazione di Python lo spiega.
Tuple ed elenchi vengono confrontati lessicograficamente mediante il confronto degli elementi corrispondenti. Ciò significa che per confrontare uguale, ogni elemento deve confrontare uguale e le due sequenze devono essere dello stesso tipo e avere la stessa lunghezza.
La documentazione di Python 2.5 lo spiega bene.
Tuple ed elenchi vengono confrontati lessicograficamente mediante il confronto degli elementi corrispondenti. Ciò significa che per confrontare uguale, ogni elemento deve confrontare uguale e le due sequenze devono essere dello stesso tipo e avere la stessa lunghezza.
Se non uguali, le sequenze sono ordinate allo stesso modo dei loro primi elementi diversi. Ad esempio, cmp ([1,2, x], [1,2, y]) restituisce lo stesso cmp (x, y). Se l'elemento corrispondente non esiste, viene ordinata prima la sequenza più breve (ad esempio, [1,2] <[1,2,3]).
Sfortunatamente quella pagina sembra essere scomparsa nella documentazione per le versioni più recenti.
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A viene convertito nel suo ASCII corrispondente ord('A') #65
stessa per altri elementi
Quindi,
>> a>b # True
puoi pensarlo come un confronto tra stringhe (è esattamente, in realtà)
la stessa cosa vale anche per gli interi.
x = (1,2,2) # see it the string "123"
y = (1,2,3)
x > y # False
perché (1 non è maggiore di 1, passa alla successiva, 2 non è maggiore di 2, passa alla successiva 2 è meno di tre -lexicograficamente -)
Il punto chiave è menzionato nella risposta sopra
pensalo come un elemento prima che un altro non sia alfabeticamente un elemento più grande di un elemento e in questo caso considera tutti gli elementi tupla come una stringa.
(1,2,3) > (1,2,2)
dàTrue
<
e>
. Ad esempio,(0, 1) < (1, 0)
valutaTrue
.