¿Cómo funciona la comparación de tuplas en Python?

Resuelto Paulo asked hace 13 años • 4 respuestas

He estado leyendo el libro de programación Core Python y el autor muestra un ejemplo como:

(4, 5) < (3, 5) # Equals false

Entonces, me pregunto, ¿cómo/por qué es igual a falso? ¿Cómo compara Python estas dos tuplas?

Por cierto, no se explica en el libro.

Paulo avatar Mar 14 '11 03:03 Paulo
Aceptado

Las tuplas se comparan posición por posición: el primer elemento de la primera tupla se compara con el primer elemento de la segunda tupla; si no son iguales (es decir, el primero es mayor o menor que el segundo), entonces ese es el resultado de la comparación; en caso contrario, se considera el segundo elemento, luego el tercero y así sucesivamente.

Ver operaciones de secuencia comunes :

Las secuencias del mismo tipo también admiten comparaciones. En particular, las tuplas y listas se comparan lexicográficamente comparando los elementos correspondientes. Esto significa que para compararse igual, cada elemento debe compararse igual y las dos secuencias deben ser del mismo tipo y tener la misma longitud.

También Comparaciones de valores para más detalles:

La comparación lexicográfica entre colecciones integradas funciona de la siguiente manera:

  • Para que dos colecciones se comparen iguales, deben ser del mismo tipo, tener la misma longitud y cada par de elementos correspondientes deben compararse iguales (por ejemplo, [1,2] == (1,2)es falso porque el tipo no es el mismo).
  • Las colecciones que admiten la comparación de pedidos se ordenan igual que sus primeros elementos desiguales (por ejemplo, [1,2,x] <= [1,2,y]tienen el mismo valor que x <= y). Si no existe un elemento correspondiente, la colección más corta se ordena primero (por ejemplo, [1,2] < [1,2,3]es verdadero).

Si no son iguales, 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 considera más pequeña (por ejemplo, [1,2] < [1,2,3] devuelve Verdadero).

Nota 1 : <y >no significa "menor que" y "mayor que" sino "está antes" y "está después": entonces (0, 1) "está antes" (1, 0).

Nota 2 : las tuplas no deben considerarse vectores en un espacio n-dimensional , comparadas según su longitud.

Nota 3 : haciendo referencia a la pregunta https://stackoverflow.com/questions/36911617/python-2-tuple-comparison : no creas que una tupla es "mayor" que otra sólo si algún elemento de la primera es mayor que el correspondiente uno en el segundo.

Don avatar Mar 13 '2011 20:03 Don

La documentación de Python lo explica.

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

Keith avatar Mar 13 '2011 20:03 Keith