2010-11-03 7 views
0

Les phrases suivantes sont une cause de confusion pour moi (du Tutoriel Guido sur python.org):des éclaircissements sur la comparaison des objets de différents types

« Notez que la comparaison d'objets de différents types est légal Le résultat. est déterministe mais arbitraire: les types sont commandés par leur nom ainsi une liste est toujours plus petite qu'une chaîne , une chaîne est toujours plus petite qu'un tuple, etc. « qu'un tuple, etc. »

.

Cela signifie que pour:

a=[90] 
b=(1) 
a<b 

le résultat devrait être True. Mais ce n'est pas le cas! Pouvez-vous me aider? D'un tuple, etc. »

De plus, ce qu'on entend par « Le résultat est déterministe mais arbitraire »?

+0

De plus, ce qu'on entend par « Le résultat est déterministe mais arbitraire »? – fixxxer

+0

S'il vous plaît ne pas commenter sur une question que vous avez posté. Veuillez ** mettre à jour ** votre question pour être ** complète **. Ensuite, supprimez votre commentaire. –

Répondre

6

(1) est un int. Vous avez probablement voulu dire (1,), qui est un tuple.

+0

En outre, que signifie «le résultat est déterministe mais arbitraire»? – fixxxer

+3

@fixxxer: Cela signifie que, avec la même entrée, vous obtiendrez la même réponse à chaque fois au cours de la même exécution, mais vous ne devriez pas dépendre de cette propriété car elle pourrait changer dans le futur. –

+0

Merci Ignacio. – fixxxer

3

S'il vous plaît noter que vous ne devriez pas compter sur ce comportement plus. Certains types intégrés ne peut être comparé à d'autres Encastrements, et de nouvelles données modèle fournit un moyen de surcharger la fonctionnalité de comparaison.

>>> set([1]) > [1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can only compare to a set 

De plus, il a été éliminé Py3K au total:

>>> [1,2] > (3,4) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: list() > tuple() 
>>> [1,2] > "1,2" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: list() > str() 
Questions connexes