Кортежи — важная структура данных в Python, очень похожая на Списки Python. Основное различие между кортежами и списками заключается в том, что кортежи не может быть изменены. После того, как он создан, он фиксируется и не может быть изменен. Кортежи быстрее, чем списки, поэтому, если вы знаете, что ваши данные не изменятся, это правильный путь. Кортежи часто используются для перебора списка фиксированных элементов, которые, как мы знаем, не изменятся.

В этом руководстве мы расскажем, как использовать кортежи, а также некоторые методы и вещи, которые вы хотели бы с ними делать. Для начала давайте определим новый Tuple:

myTuple = ("my", "new", "tuple")
print(myTuple) # ('my', 'new', 'tuple')
Войти в полноэкранный режим

Выйти из полноэкранного режима

Вы также можете увидеть, что кортежи определяются без скобок. Список значений, разделенных запятыми, также автоматически становится кортежем:


myTuple = "my", "new", "tuple"
print(myTuple) # ('my', 'new', 'tuple')
Войти в полноэкранный режим

Выйти из полноэкранного режима

Попытка изменить кортеж приведет к ошибке:

myTuple = ("my", "new", "tuple")
myTuple[0] = "your" # TypeError: 'tuple' object does not support item assignment
Войти в полноэкранный режим

Выйти из полноэкранного режима

Однако, как и следовало ожидать, это означает, что мы можем получить доступ к данным кортежа, используя синтаксис myTuple[0]чтобы обратиться к элементу с индексом 0.

Кортежи могут содержать дубликаты, поэтому они не ограничены уникальностью, например Наборы Python:

myTuple = ("my", "new", "tuple", "tuple")
print(myTuple) #  ('my', 'new', 'tuple', 'tuple' )
Войти в полноэкранный режим

Выйти из полноэкранного режима

Наконец, кортежи также могут быть вложенными, как и списки:

myTuple = ( ("nested", "tuple"), "my", "new", "tuple", "tuple")
Войти в полноэкранный режим

Выйти из полноэкранного режима


Проверка членства с помощью кортежей

Как с Наборы Pythonмы можем проверить членство с помощью кортежей, используя in а также not in ключевые слова. Например, ниже мы проверяем, apple находится в нашем кортеже fruits:

fruits = ("apple", "pear", "strawberry")

print("apple" in fruits) # True
print("apple" not in fruits) # False
Войти в полноэкранный режим

Выйти из полноэкранного режима


Объединение кортежей

Поскольку мы не можем изменять кортежи, если мы хотим создать обновленную версию кортежа, нам нужно его объединить. Это можно сделать, сложив их вместе:

tupleOne = ("one", "two")
tupleTwo = ("three", "four")
tupleThree = tupleOne + tupleTwo
print(tupleThree) # ("one", "two", "three", "four")
Войти в полноэкранный режим

Выйти из полноэкранного режима


Сортировка кортежа

Поскольку кортежи упорядочены как Списки Python, мы также можем сортировать наши кортежи. Однако у кортежа нет метода sort()поэтому мы должны использовать sorted() функция. Почему мы не можем использовать sort() метод? Поскольку кортежи неизменяемы! Итак, мы должны определить новый кортеж, используя sorted():

myTuple =  ("a", "c", "e", "b", "f", "d", "g", "z", "w", "x")
myNumberTuple = (1, 3, 5, 2, 7, 4, 6)

newTuple = sorted(myTuple)
newNumberTuple = sorted(myNumberTuple)

print(newTuple) # ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'w', 'x', 'z')
print(newNumberTuple) # (1, 2, 3, 4, 5, 6, 7)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Как с list.sort(), если вы попытаетесь выполнить сортировку с несколькими типами, такими как целые числа и строки, вы получите сообщение об ошибке. Здесь мы должны использовать дополнительные аргументы sorted() чтобы отсортировать наш список:

  • key дает нам число, которое будет использоваться для сравнения содержимого списка
  • reverse если установлено значение true, порядок будет обратным.

Например, чтобы поместить все значения, которые b в начале кортежа мы могли бы попробовать что-то вроде этого:

def isB(letter):
    if(letter == "b"):
        return 1
    else:
        return 0

myTuple = ("b", "c", "b", 5, "f", "b", 2, "z", "a", "x")

newTuple = sorted(myTuple, key=isB, reverse=True)

print(newTuple) # ['b', 'b', 'b', 'c', 5, 'f', 2, 'z', 'a', 'x']
Войти в полноэкранный режим

Выйти из полноэкранного режима

Здесь мы определяем функцию isB который используется в sorted() для передачи каждого элемента кортежа в функцию. Если элемент в кортеже bто порядок этого элемента устанавливается в 1иначе это 0. Это позволяет нам упорядочить наш список на основе условий, отличных от буквенно-цифрового порядка.


Вывод

Спасибо за чтение. Вы можете узнать больше о коллекциях данных Python ниже: