Відповіді:
Кортежі порівнюються по позиції: перший елемент першого кортежу порівнюється з першим пунктом другого кортежу; якщо вони не рівні (тобто перший більший чи менший, ніж другий), то це результат порівняння, інакше вважається другий пункт, потім третій тощо.
Див. Загальні послідовні операції :
Послідовності одного типу також підтримують порівняння. Зокрема, кортежі та списки лексикографічно порівнюються шляхом порівняння відповідних елементів. Це означає, що для порівняння рівних кожен елемент повинен порівнювати рівне, а дві послідовності повинні бути одного типу і мати однакову довжину.
Також порівняння цінностей для отримання детальної інформації:
Лексикографічне порівняння між вбудованими колекціями працює таким чином:
- Щоб дві колекції порівнювали рівні, вони повинні бути одного типу, мати однакову довжину, і кожна пара відповідних елементів повинна порівнювати однакові (наприклад,
[1,2] == (1,2)помилково, оскільки тип не однаковий).- Колекції, що підтримують порівняння замовлень, упорядковуються так само, як і перші їх нерівні елементи (наприклад,
[1,2,x] <= [1,2,y]мають те саме значення, що іx <= y). Якщо відповідного елемента не існує, спочатку впорядковується коротша колекція (наприклад,[1,2] < [1,2,3]правда).
Якщо вони не рівні, послідовності впорядковані так само, як і перші їх різні елементи. Наприклад, cmp ([1,2, x], [1,2, y]) повертає те саме, що cmp (x, y). Якщо відповідного елемента не існує, коротша послідовність вважається меншою (наприклад, [1,2] <[1,2,3] повертає True).
Примітка 1 : <і >не означають "менший за" і "більший за", але "є перед" і "є після": так (0, 1) "є до" (1, 0).
Примітка 2 : кортежі не повинні розглядатися як вектори в n-мірному просторі порівняно відповідно до їх довжини.
Примітка 3 : посилаючись на питання /programming/36911617/python-2-tuple-compitation : не думайте, що кортеж "більший", ніж інший, лише якщо будь-який елемент першого перевищує відповідний одне в друге.
x = tuple([0 for _ in range(n)])і зробіть те саме для у. Встановлення n = 100, 1000, 10000 і 100000 і запуск %timeit x==yдають значення часу .5, 4.6, 43.9 і 443 мікросекунди відповідно, що приблизно наблизиться до O (n), скільки ви практично можете отримати.
<і >не маю на увазі "менший за" і "більший за", але "приходить раніше" і "приходить після": так (0, 1)"приходить раніше"(1, 0)
Документація Python це пояснює.
Кортежі та списки порівнюються лексикографічно за допомогою порівняння відповідних елементів. Це означає, що для порівняння рівних кожен елемент повинен порівнювати рівне, а дві послідовності повинні бути одного типу і мати однакову довжину.
Документація python 2.5 це добре пояснює.
Кортежі та списки порівнюються лексикографічно за допомогою порівняння відповідних елементів. Це означає, що для порівняння рівних кожен елемент повинен порівнювати рівне, а дві послідовності повинні бути одного типу і мати однакову довжину.
Якщо вони не рівні, послідовності впорядковані так само, як і перші їх різні елементи. Наприклад, cmp ([1,2, x], [1,2, y]) повертає те саме, що cmp (x, y). Якщо відповідного елемента не існує, спочатку впорядковується коротша послідовність (наприклад, [1,2] <[1,2,3]).
На жаль, ця сторінка, схоже, зникла в документації для останніх версій.
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A перетворюється на відповідний ASCII те ord('A') #65саме для інших елементів
Отже,
>> a>b # True
ви можете подумати про це як порівняння між рядками (Це саме, насправді)
те ж саме стосується і цілих чисел.
x = (1,2,2) # see it the string "123"
y = (1,2,3)
x > y # False
тому що (1 не більший за 1, перехід до наступного, 2 не більший за 2, перехід до наступного 2 менше трьох -лексикографічно -)
Ключовий момент згадується у відповіді вище
вважати це елементом раніше, ніж інший в алфавітному порядку не є елементом, більшим за елемент, і в цьому випадку розглядати всі елементи кортежу як один рядок.
(1,2,3) > (1,2,2)даєTrue
<та>. Наприклад,(0, 1) < (1, 0)оцінює доTrue.