Respostas:
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 quex <= 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.
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.
Tuplas e listas são comparadas lexicograficamente usando a comparação dos elementos correspondentes. Isso significa que, para comparar igual, cada elemento deve comparar igual e as duas seqüências devem ser do mesmo tipo e ter o mesmo comprimento.
A documentação do python 2.5 explica bem.
Tuplas e listas são comparadas lexicograficamente usando a comparação dos elementos correspondentes. Isso significa que, para comparar igual, cada elemento deve comparar igual e as duas seqüências devem ser do mesmo tipo e ter o mesmo comprimento.
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á ordenada primeiro (por exemplo, [1,2] <[1,2,3]).
Infelizmente, essa página parece ter desaparecido na documentação para versões mais recentes.
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 elementos
Entã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
pense nele como um elemento antes de outro elemento alfabético que não seja maior que um elemento e, nesse caso, considere todos os elementos da tupla como uma sequência.
(1,2,3) > (1,2,2)
dáTrue
<
e>
. Por exemplo,(0, 1) < (1, 0)
avalia comoTrue
.