tutorial lenguaje descargar python

lenguaje - python tutorial



En Python, ¿por qué es[2] menos que(1,)? (2)

Las secuencias no son obligadas cuando se comparan, por lo tanto, se compara el nombre de su tipo.

>>> ''list'' < ''tuple'' True

FONDO

He estado tratando de averiguar por qué mi IA ha estado haciendo algunos movimientos locos y rastreé el problema de nuevo al siguiente comportamiento cuando uso Python 2.7.2

>>> print [2]>[1] True >>> print (2,)>(1,) True >>> print [2]>(1,) False (WHY?) >>> print [2]<[1] False >>> print (2,)<(1,) False >>> print [2]<(1,) True (WHY?)

Parece comportarse como si las listas fueran siempre menos que tuplas.

Esto no es lo que esperaba de la documentation

Las tuplas y las listas se comparan lexicográficamente mediante la comparación de los elementos correspondientes. Esto significa que para comparar igual, cada elemento debe comparar igual y las dos secuencias deben ser del mismo tipo y tener la misma longitud.

Si no es igual, las secuencias se ordenan igual que sus primeros elementos diferentes. Por ejemplo, cmp ([1,2, x], [1,2, y]) devuelve lo mismo que cmp (x, y). Si el elemento correspondiente no existe, la secuencia más corta se ordenará primero (por ejemplo, [1,2] <[1,2,3]).

PREGUNTA

¿Que esta pasando aqui? ¿Se me permite comparar tuplas y listas, o tal vez solo se me permite comparar el mismo tipo consigo mismo?


No son del mismo tipo.

cada elemento debe compararse igual y las dos secuencias deben ser del mismo tipo y tener la misma longitud

Por lo tanto, la comparación se realiza según el tipo, no sobre los datos reales almacenados en las secuencias. En python3.x, esta comparación genera un TypeError :

Python 3.2 (r32:88445, May 11 2011, 09:23:22) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> [2] > (1,) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: list() > tuple()