¿Cómo funciona la comparación de tuplas en Python?
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.
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 quex <= 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.
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.