web-dev-qa-db-fra.com

Comment fonctionne la comparaison avec Tuple en Python?

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.

125
Paulo

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.

141
Don

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.

19
Keith
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. 
1
Gaurav Swarankar

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.

0
Bishoy Abd