- Кортежи в Python
- Оглавление
- Особенности кортежей
- Как создать кортеж в Python
- Кортеж с одним элементом
- Использование конструктора tuple()
- Доступ к элементам кортежа
- Индексы элементов кортежа
- Отрицательный индекс
- Срезы кортежей
- Обновление кортежей
- Конкатенация нескольких кортежей
- Удаление значений в кортеже
- Удаление кортежа
- Встроенные функции кортежей
- Заключение
- №10 Кортежи (tuple) / Уроки по Python для начинающих
- Доступ к элементам кортежа
- Изменить элемент корежа
- Итерация по кортежу
- Длина кортежа
- Добавление элементов
- Удаление элементов
- Конструктор tuple()
- Методы кортежа
Кортежи в Python
Кортеж (англ. tuple) — встроенный тип данных в Python. Кортежи используются для хранения нескольких элементов в одной переменной.
Оглавление
Особенности кортежей
Элементы, хранящиеся в кортеже, могут быть любого типа. Они упорядочены и неизменяемы после создания.
Синтаксис кортежей напоминает синтаксис списков. Кортежи обычно заключаются в круглые скобки, хотя это не обязательно. А списки заключаются в квадратные скобки.
От редакции Pythonist: о списках читайте в статье «Списки в Python: полное руководство для начинающих», а о разнице между кортежами и списками — в статье «Чем отличается кортеж от списка в Python».
Кортежи в Python быстрее, чем другие коллекции данных, но сохранять в них лучше всего данные, которые не понадобится изменять в дальнейшем.
Как создать кортеж в Python
Создать кортеж в Python очень просто, но есть несколько моментов, о которых вам нужно знать.
Кортежи обычно заключаются в круглые скобки, но это не обязательно. Кроме того, если в кортеже только одно значение, после него должна стоять запятая.
Ниже приведен пример создания кортежа, содержащего три элемента.
exampletuple = ("house", "unit", "apartment")
Использовав print для вывода этого кортежа, вы получите примерно следующее:
Кортеж с одним элементом
Если вы хотите создать кортеж, содержащий только один элемент, обязательно добавьте запятую после элемента. Без этого 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:\Python\tuple.py", line 7, in 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, поскольку их использование выгоднее, чем использование списка.
№10 Кортежи (tuple) / Уроки по Python для начинающих
Кортеж — это упорядоченная последовательность, неизменяемая. В Python кортежи пишутся в круглых скобках.
Создание кортежа:
thistuple = ("помидор", "огурец", "лук") print(thistuple)
Доступ к элементам кортежа
Вы можете получить доступ к элементам кортежа с помощью индекса.
Вывести элемент с индексом 1:
thistuple = ("помидор", "огурец", "лук") print(thistuple[1])
Изменить элемент корежа
После создания кортежа вы не можете вносить изменения в него. Кортеж — неизменяемый.
thistuple = ("помидор", "огурец", "лук") thistuple[1] = "морковка"
Traceback (most recent call last): File "", line 1, in thistuple[1] = "морковка" TypeError: 'tuple' object does not support item assignment
Итерация по кортежу
Вы можете перебирать элементы кортежа с помощью цикла for .
thistuple = ("помидор", "огурец", "лук") for x in thistuple: print(x)
Узнать больше о цикле for вы можете в разделе Python цикл For.
Длина кортежа
Для определения количества элементов списка, используйте метод len() .
Выведите количество элементов в кортеже:
thistuple = ("помидор", "огурец", "лук") print(len(thistuple))
Добавление элементов
После создания кортежа, вы не можете добавлять в него элементы. Кортеж — неизменяемый.
thistuple = ("помидор", "огурец", "лук") thistuple[3] = "морковка"
Traceback (most recent call last): File "", line 1, in thistuple[3] = "морковка" TypeError: 'tuple' object does not support item assignment
Удаление элементов
Вы не можете удалять элементы по отдельности, но вы можете полностью удалить кортеж:
Ключевое слово del может полностью удалить кортеж:
thistuple = ("помидор", "огурец", "лук") del thistuple print(thistuple) # эта команда вызовет ошибку, так как thistuple больше не существует
Конструктор tuple()
Так же конструктор tuple() можно использовать для создания кортежа.
thistuple = tuple(("помидор", "огурец", "лук")) # Обратите внимание на двойные круглые скобки print(thistuple)
Методы кортежа
В Python так же существуют два встроенных метода, которые вы можете использовать при работе.
Метод | Значение |
---|---|
count() | Возвращает количество раз, которое указанный элемент встречается в кортеже |
index() | Ищет кортеж по указанному значению и возвращает его индекс |