Кортежи сравниваются по позиции: первый элемент первого кортежа сравнивается с первым элементом второго кортежа; если они не равны (т. е. первый больше или меньше второго), то это результат сравнения, в противном случае рассматривается второй элемент, затем третий и т. д.
Смотрите общие операции последовательности :
Последовательности того же типа также поддерживают сравнения. В частности, кортежи и списки сравниваются лексикографически путем сравнения соответствующих элементов. Это означает, что для сравнения равных каждый элемент должен сравнивать равные, а две последовательности должны быть одного типа и иметь одинаковую длину.
Также сравнение ценностей для получения дополнительной информации:
Лексикографическое сравнение встроенных коллекций работает следующим образом:
- Чтобы две коллекции сравнивались на равных, они должны быть одного типа, иметь одинаковую длину, а каждая пара соответствующих элементов должна сравнивать равные (например,
[1,2] == (1,2)
false, поскольку тип не совпадает).
- Коллекции, поддерживающие сравнение порядка, упорядочиваются так же, как и их первые неравные элементы (например,
[1,2,x] <= [1,2,y]
имеет то же значение, что и x <= y
). Если соответствующий элемент не существует, более короткий набор упорядочивается первым (например, [1,2] < [1,2,3]
true).
Если не равны, последовательности упорядочены так же, как их первые отличающиеся элементы. Например, 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-comparison : не думайте, что кортеж «больше» другого, только если какой-либо элемент первого больше соответствующего один во втором.
<
и>
. Например,(0, 1) < (1, 0)
оценивает доTrue
.x = tuple([0 for _ in range(n)])
и сделайте то же самое для вас. Установка n = 100, 1000, 10000 и 100000 и запуск%timeit x==y
дали значения синхронизации, равные 0,5, 4,6, 43,9 и 443 микросекунды соответственно, что примерно настолько близко к O (n), насколько вы можете практически получить.<
и>
не означает «меньше, чем» и «больше, чем», но «предшествует» и «приходит после»: так(0, 1)
«предшествует»(1, 0)
Документация Python объясняет это.
источник
Документация Python 2.5 объясняет это хорошо.
К сожалению, эта страница, кажется, исчезла в документации для более свежих версий.
источник
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