Відповіді:
Кортежі порівнюються по позиції: перший елемент першого кортежу порівнюється з першим пунктом другого кортежу; якщо вони не рівні (тобто перший більший чи менший, ніж другий), то це результат порівняння, інакше вважається другий пункт, потім третій тощо.
Див. Загальні послідовні операції :
Послідовності одного типу також підтримують порівняння. Зокрема, кортежі та списки лексикографічно порівнюються шляхом порівняння відповідних елементів. Це означає, що для порівняння рівних кожен елемент повинен порівнювати рівне, а дві послідовності повинні бути одного типу і мати однакову довжину.
Також порівняння цінностей для отримання детальної інформації:
Лексикографічне порівняння між вбудованими колекціями працює таким чином:
- Щоб дві колекції порівнювали рівні, вони повинні бути одного типу, мати однакову довжину, і кожна пара відповідних елементів повинна порівнювати однакові (наприклад,
[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
.