J'ai lu le livre de programmation Core Python , et l'auteur montre un exemple du type:
(4, 5) < (3, 5) # Equals false
Alors, je me demande, comment/pourquoi est-ce égal à faux? Comment python compare-t-il ces deux n-uplets?
Au fait, ce n'est pas expliqué dans le livre.
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 pris en compte, puis le troisième et ainsi de suite.
Voir doc :
Les types de séquence prennent également en charge les comparaisons. En particulier, les nuplets et les listes sont comparés lexicographiquement en comparant les éléments correspondants. Cela signifie que pour comparer égaux, tous les éléments doivent être comparés égaux et les deux séquences doivent être du même type et avoir la même longueur.
Aussi this :
Les nuplets et les listes sont comparés lexicographiquement en comparant les éléments correspondants. Cela signifie que pour comparer égal, chaque élément doit être comparé égal et les deux séquences doivent être du même type et avoir la même longueur.
Si elles ne sont pas égales, 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).
Remarque 1: <
et >
ne signifient pas "inférieur à" et "supérieur à" mais "est avant" et "est après": so (0, 1) "est avant" (1, 0).
Note 2: les n-uplets ne doivent pas être considérés comme vecteurs dans un espace à n dimensions, comparés en fonction de leur longueur.
Note 3: se référant à la question Comparaison des tuples Python 2 : ne pense pas qu'un tuples est "plus grand" qu'un autre uniquement si l'un des éléments du premier est plus grand que celui correspondant dans le second.
La documentation Python l'explique.
Les tuples et les listes sont comparés lexicographiquement en utilisant la comparaison de éléments correspondants. Ça signifie que pour comparer égaux, chaque élément doit comparer égal et les deux les séquences doivent être du même type et avoir la même longueur.
Comparing tuples
A comparison operator in Python can work with tuples.
The comparison starts with a first element of each Tuple. If they do not compare to =,< or > then it proceed to the second element and so on.
It starts with comparing the first element from each of the tuples
Let's study this with an example-
#case 1
a=(5,6)
b=(1,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
#case 2
a=(5,6)
b=(5,4)
if (a>b):print("a is bigger")
else: print ("b is bigger")
#case 3
a=(5,6)
b=(6,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
Case1: Comparison starts with a first element of each Tuple. In this case 5>1, so the output a is bigger
Case 2: Comparison starts with a first element of each Tuple. In this case 5>5 which is inconclusive. So it proceeds to the next element. 6>4, so the output a is bigger
Case 3: Comparison starts with a first element of each Tuple. In this case 5>6 which is false. So it goes into the else loop prints "b is bigger."
conclusion: Tuples always compare its first index and gives output according to your program.it does not compare all the elements.
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A est converti en son ASCII ord('A') #65
correspondant, identique pour les autres éléments
Donc, >> a>b # True
vous pouvez le considérer comme une comparaison entre des chaînes (c'est exactement, en fait)
la même chose vaut pour les entiers aussi.
x = (1,2,3) # see it the string "123"
y = (1,2,2)
x > y # False
parce que (1 n’est pas supérieur à 1, passe à l’autre, 2 n’est pas supérieur à 2, passe à l’autre 2 est inférieur à trois - de manière réflexe -)
Le point clé est mentionné dans la réponse ci-dessus
pensez-y comme un élément est avant un autre alphabétiquement, aucun élément n'est supérieur à un élément et dans ce cas, considérez tous les éléments Tuple comme une seule chaîne.