Share This
Связаться со мной
Крути в низ
Categories
//Кортежи в Python

Кортежи в Python

27.02.2023Category : Python

Кортеж (англ. tuple) — встроенный тип данных в Python. Кортежи используются для хранения нескольких элементов в одной переменной.

Оглавление

  • Особенности кортежей
  • Создание кортежа
  • Доступ к элементам кортежа
  • Обновление кортежей
  • Удаление значений в кортеже
  • Удаление кортежа
  • Встроенные функции кортежей

Особенности кортежей

Элементы, хранящиеся в кортеже, могут быть любого типа. Они упорядочены и неизменяемы после создания.

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

От редакции Pythonist: о списках читайте в статье «Списки в Python: полное руководство для начинающих», а о разнице между кортежами и списками — в статье «Чем отличается кортеж от списка в Python».

Кортежи в Python быстрее, чем другие коллекции данных, но сохранять в них лучше всего данные, которые не понадобится изменять в дальнейшем.

Как создать кортеж в Python

Создать кортеж в Python очень просто, но есть несколько моментов, о которых вам нужно знать.

Кортежи обычно заключаются в круглые скобки, но это не обязательно. Кроме того, если в кортеже только одно значение, после него должна стоять запятая.

Ниже приведен пример создания кортежа, содержащего три элемента.

exampletuple = ("house", "unit", "apartment")

Использовав print для вывода этого кортежа, вы получите примерно следующее:

('house', 'unit', 'apartment')

Кортеж с одним элементом

Если вы хотите создать кортеж, содержащий только один элемент, обязательно добавьте запятую после элемента. Без этого Python не распознает его как кортеж.

Правильное создание кортежа в Python: exampletuple = («house»,).

Неправильное создание кортежа: exampletuple = («house»).

Использование конструктора tuple()

Для корректного создания кортежа также можно использовать конструктор.

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:Pythontuple.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».

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close