Кортеж (англ. tuple) — встроенный тип данных в Python. Кортежи используются для хранения нескольких элементов в одной переменной.
Элементы, хранящиеся в кортеже, могут быть любого типа. Они упорядочены и неизменяемы после создания.
Синтаксис кортежей напоминает синтаксис списков. Кортежи обычно заключаются в круглые скобки, хотя это не обязательно. А списки заключаются в квадратные скобки.
От редакции Pythonist: о списках читайте в статье «Списки в Python: полное руководство для начинающих», а о разнице между кортежами и списками — в статье «Чем отличается кортеж от списка в Python».
Кортежи в Python быстрее, чем другие коллекции данных, но сохранять в них лучше всего данные, которые не понадобится изменять в дальнейшем.
Создать кортеж в Python очень просто, но есть несколько моментов, о которых вам нужно знать.
Кортежи обычно заключаются в круглые скобки, но это не обязательно. Кроме того, если в кортеже только одно значение, после него должна стоять запятая.
Ниже приведен пример создания кортежа, содержащего три элемента.
exampletuple = ("house", "unit", "apartment")
Использовав print для вывода этого кортежа, вы получите примерно следующее:
('house', 'unit', 'apartment')
Если вы хотите создать кортеж, содержащий только один элемент, обязательно добавьте запятую после элемента. Без этого Python не распознает его как кортеж.
Правильное создание кортежа в Python: exampletuple = ("house",)
.
Неправильное создание кортежа: exampletuple = ("house")
.
Для корректного создания кортежа также можно использовать конструктор.
exampletuple = tuple(("house", "unit", "apartment")) print(exampletuple) # Вывод: # ('house', 'unit', 'apartment')
Как видите, выводится то же значение, что и при создании кортежа без конструктора.
Доступ к значениям внутри кортежа мало чем отличается от доступа к элементам в списке. В этом разделе мы рассмотрим несколько различных техник, позволяющих получить доступ к нужному вам значению.
Индексация кортежей в Python начинается с 0, поэтому для ссылки на первый элемент используется индексное значение 0. Вы можете получить доступ к элементам кортежа, используя квадратные скобки []
и индексы элементов.
Кортеж можно перебрать в цикле for
или обращаться к данным напрямую, по индексу.
От редакции Pythonist: рекомендуем почитать «Цикл for в Python: тонкости написания».
В нашем примере мы создаем кортеж с 5 элементами. Это означает, что первый элемент будет иметь индекс 0, а последний — 4. Попытка получить доступ к элементу кортежа по индексу вне этого диапазона приведет к ошибке.
После создания кортежа мы выводим значения элементов под индексами 0 и 3.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[0]) print(exampletuple[3]) # Вывод: # house # villa
Как видите, значение элемента с индексом 0 — это первая строка, house
. А под индексом 3 хранится четвертая строка, villa
.
В коллекции данных кортежа можно использовать отрицательный индекс. Использование отрицательных чисел означает, что отсчет идет в обратном направлении. Так, индекс -1
относится к последнему элементу кортежа.
В следующем примере мы создаем кортеж с 5 элементами. Мы будем обращаться к этим элементам, используя отрицательный индекс вместо положительного.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[-1]) print(exampletuple[-3]) # Вывод: # acreage # apartment
Как видите, мы вывели последний и третий элемент нашего кортежа.
Чтобы получить доступ к диапазону значений из кортежа, вы можете использовать оператор среза — :
. Чтобы задать диапазон, вы указываете его начало и конец, разделяя их двоеточием. Например, [0:4]
выберет все значения с индексами от 0 до 4.
Указывать начало и конец диапазона не обязательно. Но важно, какое именно значение вы опустите. Так, например, срез [:3]
выберет все элементы от начала кортежа, т. е. от элемента с индексом 0, до элемента с индексом 3. А срез [1:]
— элементы от индекса 1 до конца кортежа.
В нашем примере ниже мы хотим получить все, что находится между индексами 1 и 3.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[1:3]) # Вывод: # ('unit', 'apartment')
Обратите внимание, что при взятии среза элемент, указанный как конец диапазона, в срез не входит. Здесь мы вывели срез [1:3]
и получили в выводе элементы с индексами 1 и 2.
Кортежи в Python относятся к неизменяемым типам данных, поэтому вы не можете изменить кортеж после его создания. Однако вы можете создать новый кортеж из частей существующего.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[0:3] print(newtuple) # Вывод: # ('house', 'unit', 'apartment')
Наш новый кортеж содержит только часть старого. Можно пойти еще дальше и объединить два кортежа в новый кортеж (мы рассмотрим это в следующем разделе).
От редакции Pythonist: на тему изменяемости объектов рекомендуем очень хорошую и подробную статью — «Python 3: изменяемый, неизменяемый…».
Вам может понадобиться объединить несколько кортежей. Например, присоединить часть одного кортежа к другому.
В следующем примере мы берем часть исходного кортежа и объединяем ее с новым кортежем. Этот объединенный кортеж хранится в новой переменной.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[0:3] + ("ranch", "farm") print(newtuple) # Вывод: # ('house', 'unit', 'apartment', 'ranch', 'farm')
Итак, мы успешно объединили два кортежа. Конечно, это всего лишь пример, и вы можете проделать это более чем с двумя кортежами.
Как мы уже говорили, кортежи в Python неизменяемы, но значения из них все же можно удалять. Правда, как и при конкатенации, для этого создается новый кортеж.
В приведенном ниже примере мы удаляем элемент apartment
, разрезая кортеж и не включая этот конкретный элемент в newtuple
.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[:2] + exampletuple[3:] print(newtuple) # Вывод: # ('house', 'unit', 'villa', 'acreage')
Элемент apartment
был успешно удален, но для этого пришлось создать новый кортеж.
Удаление целого кортежа в Python довольно простое и может быть выполнено с помощью оператора del
. После удаления любое обращение к этому кортежу приведет к ошибке, если только вы не создадите его заново.
Ниже мы создаем кортеж, выводим его, удаляем и пытаемся вывести снова.
exampletuple = ("house", "unit", "apartment") print(exampletuple) del exampletuple print(exampletuple)
Результат:
('house', 'unit', 'apartment') Traceback (most recent call last): File "D:\Python\tuple.py", line 7, in <module> print(exampletuple) NameError: name 'exampletuple' is not defined
Вывод показывает, что Python успешно удалил кортеж, поскольку при попытке вывести его во второй раз возникла ошибка.
Мы уже рассмотрели некоторые способы взаимодействия с кортежами. В таблице ниже приведены еще несколько функций, которые вы можете использовать с кортежами.
cmp(tuple1,tuple2) | Сравнивает элементы двух кортежей. |
len(tuple) | Возвращает длину кортежа. |
all(tuple) | Возвращает True, если все элементы кортежа оцениваются как True или если кортеж пуст. |
any(tuple) | Возвращает True, если хоть один элемент кортежа оценивается как True. Если кортеж пуст — возвращает False. |
max(tuple) | Возвращает максимальное значение в кортеже. |
min(tuple) | Возвращает минимальное значение в кортеже. |
sum(tuple) | Суммирует все числа в кортеже. Если в кортеже встречается строка, выдает ошибку. |
sorted(tuple) | Сортирует кортеж. |
Надеемся, что это руководство научило вас всем основам использования кортежей в Python. Кортежи могут пригодиться вам при написании сложных программ на Python, поскольку их использование выгоднее, чем использование списка.
Перевод статьи «How to Use Python Tuples».
В Python проверка существования файла перед попыткой его использования является обычной задачей, особенно если вы…
При анализе данных часто требуется быстро найти абсолютное значение набора чисел. Для выполнения этой задачи…
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…