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, de lo contrario se considera el segundo elemento, luego el tercero y así sucesivamente.
Ver operaciones de secuencia común :
Las secuencias del mismo tipo también admiten comparaciones. En particular, las tuplas y las listas se comparan lexicográficamente comparando 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.
También comparaciones de valores para más detalles:
La comparación lexicográfica entre las colecciones incorporadas funciona de la siguiente manera:
- Para que dos colecciones comparen iguales, deben ser del mismo tipo, tener la misma longitud y cada par de elementos correspondientes debe comparar 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]
tiene 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 verdadera).
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 considera más pequeña (por ejemplo, [1,2] <[1,2,3] devuelve True).
Nota 1 : <
y >
no significa "menor que" y "mayor que" pero "es anterior" y "es posterior": entonces (0, 1) "es anterior" (1, 0).
Nota 2 : las tuplas no deben considerarse como vectores en un espacio n-dimensional , en comparación con su longitud.
Nota 3 : refiriéndose a la pregunta /programming/36911617/python-2-tuple-comparison : no piense que una tupla es "mayor" que otra solo si algún elemento del primero es mayor que el correspondiente uno en el segundo
<
y>
. Por ejemplo,(0, 1) < (1, 0)
evalúa aTrue
.x = tuple([0 for _ in range(n)])
y haga lo mismo para y. Establecer n = 100, 1000, 10,000 y 100,000 y ejecutar%timeit x==y
valores de tiempo de .5, 4.6, 43.9 y 443 microsegundos respectivamente, que es lo más cercano a O (n) que prácticamente puede obtener.<
y>
no significa "menor que" y "mayor que", sino "viene antes" y "viene después": así que(0, 1)
"viene antes"(1, 0)
La documentación de Python lo explica.
fuente
La documentación de Python 2.5 lo explica bien.
Lamentablemente, esa página parece haber desaparecido en la documentación de las versiones más recientes.
fuente
a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')
A se convierte a su correspondiente ASCII
ord('A') #65
igual para otros elementosEntonces,
>> a>b # True
puedes pensar que es una comparación entre una cadena (es exactamente, en realidad)Lo mismo ocurre con los enteros también.
x = (1,2,2) # see it the string "123" y = (1,2,3) x > y # False
porque (1 no es mayor que 1, pasar al siguiente, 2 no es mayor que 2, pasar al siguiente 2 es menor que tres -lexicográficamente-)
El punto clave se menciona en la respuesta anterior.
fuente
(1,2,3) > (1,2,2)
daTrue