As tuplas são comparadas posição por posição: o primeiro item da primeira tupla é comparado ao primeiro item da segunda tupla; se eles não são iguais (ou seja, o primeiro é maior ou menor que o segundo), esse é o resultado da comparação; caso contrário, o segundo item é considerado, o terceiro e assim por diante.
Consulte Operações comuns de sequência :
Sequências do mesmo tipo também suportam comparações. Em particular, tuplas e listas são comparadas lexicograficamente através da comparação dos elementos correspondentes. Isso significa que, para comparar igual, todo elemento deve comparar igual e as duas seqüências devem ser do mesmo tipo e ter o mesmo comprimento.
Também faça comparações de valores para obter mais detalhes:
A comparação lexicográfica entre coleções internas funciona da seguinte maneira:
- Para que duas coleções comparem iguais, elas devem ser do mesmo tipo, ter o mesmo comprimento e cada par de elementos correspondentes deve comparar igual (por exemplo,
[1,2] == (1,2)
é falso porque o tipo não é o mesmo).
- As coleções que suportam a comparação de pedidos são ordenadas da mesma forma que seus primeiros elementos desiguais (por exemplo,
[1,2,x] <= [1,2,y]
tem o mesmo valor que x <= y
). Se um elemento correspondente não existir, a coleção mais curta será solicitada primeiro (por exemplo, [1,2] < [1,2,3]
é verdadeira).
Se não for igual, as seqüências são ordenadas da mesma forma que seus primeiros elementos diferentes. Por exemplo, cmp ([1,2, x], [1,2, y]) retorna o mesmo que cmp (x, y). Se o elemento correspondente não existir, a sequência mais curta será considerada menor (por exemplo, [1,2] <[1,2,3] retorna True).
Nota 1 : <
e >
não significa "menor que" e "maior que" mas "é anterior" e "é posterior": então (0, 1) "é anterior" (1, 0).
Nota 2 : as tuplas não devem ser consideradas vetores em um espaço n-dimensional , comparadas de acordo com seu comprimento.
Nota 3 : referindo-se à pergunta /programming/36911617/python-2-tuple-comparison : não pense que uma tupla seja "maior" que outra somente se algum elemento do primeiro for maior que o correspondente um no segundo.
<
e>
. Por exemplo,(0, 1) < (1, 0)
avalia comoTrue
.x = tuple([0 for _ in range(n)])
e faça o mesmo para y. A definição de n = 100, 1000, 10.000 e 100.000 e a execução%timeit x==y
deram valores de temporização de 0,5, 4,6, 43,9 e 443 microssegundos, respectivamente, o que é quase o mais próximo de O (n) que você pode obter praticamente.<
e>
não significa "menor que" e "maior que", mas "vem antes" e "vem depois": então(0, 1)
"vem antes"(1, 0)
A documentação do Python explica isso.
fonte
A documentação do python 2.5 explica bem.
Infelizmente, essa página parece ter desaparecido na documentação para versões mais recentes.
fonte
a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')
A é convertido em seu ASCII correspondente
ord('A') #65
mesmo para outros elementosEntão,
>> a>b # True
você pode pensar nisso como uma comparação entre as strings (é exatamente, na verdade)o mesmo vale para números inteiros também.
x = (1,2,2) # see it the string "123" y = (1,2,3) x > y # False
porque (1 não é maior que 1, move para o próximo, 2 não é maior que 2, move para o próximo 2 é menor que três --lexicograficamente -)
O ponto principal é mencionado na resposta acima
fonte
(1,2,3) > (1,2,2)
dáTrue