Ответы:
Кортежи сравниваются по позиции: первый элемент первого кортежа сравнивается с первым элементом второго кортежа; если они не равны (т. е. первый больше или меньше второго), то это результат сравнения, в противном случае рассматривается второй элемент, затем третий и т. д.
Смотрите общие операции последовательности :
Последовательности того же типа также поддерживают сравнения. В частности, кортежи и списки сравниваются лексикографически путем сравнения соответствующих элементов. Это означает, что для сравнения равных каждый элемент должен сравнивать равные, а две последовательности должны быть одного типа и иметь одинаковую длину.
Также сравнение ценностей для получения дополнительной информации:
Лексикографическое сравнение встроенных коллекций работает следующим образом:
- Чтобы две коллекции сравнивались на равных, они должны быть одного типа, иметь одинаковую длину, а каждая пара соответствующих элементов должна сравнивать равные (например,
[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 : не думайте, что кортеж «больше» другого, только если какой-либо элемент первого больше соответствующего один во втором.
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 объясняет это хорошо.
Кортежи и списки сравниваются лексикографически с использованием сравнения соответствующих элементов. Это означает, что для сравнения равных каждый элемент должен сравнивать равные, а две последовательности должны быть одного типа и иметь одинаковую длину.
Если не равны, последовательности упорядочены так же, как их первые отличающиеся элементы. Например, 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
.