Les tuples sont comparés position par position: le premier élément du premier tuple est comparé au premier élément du deuxième tuple; s'ils ne sont pas égaux (c'est-à-dire que le premier est plus grand ou plus petit que le second) alors c'est le résultat de la comparaison, sinon le deuxième élément est considéré, puis le troisième et ainsi de suite.
Voir Opérations de séquence courantes :
Les séquences du même type prennent également en charge les comparaisons. En particulier, les tuples et les listes sont comparés lexicographiquement en comparant les éléments correspondants. Cela signifie que pour comparer égal, chaque élément doit comparer égal et les deux séquences doivent être du même type et avoir la même longueur.
Également des comparaisons de valeur pour plus de détails:
La comparaison lexicographique entre les collections intégrées fonctionne comme suit:
- Pour que deux collections soient comparables, elles doivent être du même type, avoir la même longueur et chaque paire d'éléments correspondants doit être comparable (par exemple,
[1,2] == (1,2)
est faux car le type n'est pas le même).
- Les collections qui prennent en charge la comparaison des ordres sont classées de la même manière que leurs premiers éléments inégaux (par exemple,
[1,2,x] <= [1,2,y]
a la même valeur que x <= y
). Si un élément correspondant n'existe pas, la collection la plus courte est ordonnée en premier (par exemple, [1,2] < [1,2,3]
est vrai).
Si ce n'est pas égal, les séquences sont ordonnées de la même manière que leurs premiers éléments différents. Par exemple, cmp ([1,2, x], [1,2, y]) renvoie la même chose que cmp (x, y). Si l'élément correspondant n'existe pas, la séquence la plus courte est considérée comme plus petite (par exemple, [1,2] <[1,2,3] renvoie True).
Note 1 : <
et >
ne signifie pas «plus petit que» et «supérieur à» mais «est avant» et «est après»: donc (0, 1) «est avant» (1, 0).
Note 2 : les tuples ne doivent pas être considérés comme des vecteurs dans un espace à n dimensions , comparés en fonction de leur longueur.
Note 3 : en se référant à la question /programming/36911617/python-2-tuple-comparison : ne pensez pas qu'un tuple est "supérieur" à un autre seulement si un élément du premier est supérieur au correspondant un dans le second.
<
et>
. Par exemple,(0, 1) < (1, 0)
évalue àTrue
.x = tuple([0 for _ in range(n)])
et faites de même pour y. Le réglage n = 100, 1000, 10 000 et 100 000 et l'exécution ont%timeit x==y
donné des valeurs de synchronisation de 0,5, 4,6, 43,9 et 443 microsecondes respectivement, ce qui est à peu près aussi proche de O (n) que vous pouvez pratiquement obtenir.<
et>
ne veut pas dire "plus petit alors" et "plus grand alors" mais "vient avant" et "vient après": donc(0, 1)
"vient avant"(1, 0)
La documentation Python l' explique.
la source
La documentation python 2.5 l' explique bien.
Malheureusement, cette page semble avoir disparu de la documentation des versions plus récentes.
la source
a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')
A est converti en son ASCII correspondant
ord('A') #65
pour les autres élémentsDonc,
>> a>b # True
vous pouvez le considérer comme une comparaison entre une chaîne (c'est exactement, en fait)il en va de même pour les nombres entiers.
x = (1,2,2) # see it the string "123" y = (1,2,3) x > y # False
parce que (1 n'est pas supérieur à 1, passer au suivant, 2 n'est pas supérieur à 2, passer au suivant 2 est inférieur à trois -lexicographiquement -)
Le point clé est mentionné dans la réponse ci-dessus
la source
(1,2,3) > (1,2,2)
donneTrue