Кортежи в Python

Кортежи (tuples) в Python — это упорядоченные неизменяемые коллекции объектов. 

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

 В этой лекции мы рассмотрим основные особенности кортежей, их отличия от списков, а также способы конвертации между кортежами и списками.

1. Создание кортежей

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

# Пустой кортеж
empty_tuple = ()

# Кортеж с элементами
example_tuple = (1, 2, 3)

# Кортеж без круглых скобок (packing)
packed_tuple = 4, 5, 6

# Кортеж из одного элемента (необходимо добавить запятую)
single_element_tuple = (42,)

 

2. Основные особенности кортежей

Неизменяемость:
Главная особенность кортежей заключается в их неизменяемости. После создания кортежа его элементы нельзя изменить, добавить или удалить.

example_tuple = (1, 2, 3)

# Попытка изменить элемент вызовет ошибку
# example_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

Упорядоченность:
Кортежи сохраняют порядок элементов, как и списки.

days_of_week = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
print(days_of_week[0])  # "Monday"

Поддержка разных типов данных:
В кортежах можно хранить элементы разных типов, как и в списках.

mixed_tuple = (1, "two", 3.0, [4, 5])

3. Операции с кортежами

С кортежами можно выполнять большинство операций, которые доступны для списков:

Доступ по индексу:

example_tuple = (10, 20, 30)
print(example_tuple[1])  # 20

Срезы (slicing):

example_tuple = (10, 20, 30, 40, 50)
print(example_tuple[1:4])  # (20, 30, 40)

Объединение и повторение:

tuple1 = (1, 2)
tuple2 = (3, 4)
combined = tuple1 + tuple2
print(combined)  # (1, 2, 3, 4)

repeated = tuple1 * 3
print(repeated)  # (1, 2, 1, 2, 1, 2)

Проверка наличия элемента:

example_tuple = (10, 20, 30)
print(20 in example_tuple)  # True
print(40 in example_tuple)  # False

 

4. Функции, доступные для кортежей

Многие функции, доступные для списков, также работают с кортежами:

Вот таблица, описывающая основные функции и методы для работы с кортежами в Python.

Функция/МетодОписаниеПример использованияРезультат
len(tuple)Возвращает количество элементов в кортеже.len((1, 2, 3))3
tuple[index]Доступ к элементу по индексу.t = (1, 2, 3)
t[1]
2
tuple.count(x)Возвращает количество вхождений элемента x в кортеже.(1, 2, 3, 1).count(1)2
tuple.index(x)Возвращает индекс первого вхождения элемента x в кортеже.(1, 2, 3).index(2)1
tuple + tupleКонкатенация (соединение) кортежей.(1, 2) + (3, 4)(1, 2, 3, 4)
tuple * nПовторяет кортеж n раз.(1, 2) * 3(1, 2, 1, 2, 1, 2)
x in tupleПроверяет, содержит ли кортеж элемент x.3 in (1, 2, 3)True
min(tuple)Возвращает минимальный элемент в кортеже.min((1, 2, 3))1
max(tuple)Возвращает максимальный элемент в кортеже.max((1, 2, 3))3
sum(tuple)Возвращает сумму элементов в кортеже (если элементы числовые).sum((1, 2, 3))6

 

5. Основные отличия кортежей от списков

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

example_list = [1, 2, 3]
example_list[0] = 10  # Это работает

example_tuple = (1, 2, 3)
# example_tuple[0] = 10  # Это вызовет ошибку

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

import timeit

# Сравним скорость доступа
print(timeit.timeit("x[1]", setup="x = (1, 2, 3)"))
print(timeit.timeit("x[1]", setup="x = [1, 2, 3]"))

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

# Кортеж как ключ в словаре
my_dict = {(1, 2): "value"}
print(my_dict[(1, 2)])  # value

# Список в качестве ключа вызовет ошибку
# my_dict = {[1, 2]: "value"}  # TypeError: unhashable type: 'list'

6. Конвертация между кортежами и списками

Конвертация кортежа в список:
Для преобразования кортежа в список используется функция list().

example_tuple = (10, 20, 30)
example_list = list(example_tuple)
print(example_list)  # [10, 20, 30]

Конвертация списка в кортеж:
Для преобразования списка в кортеж используется функция tuple().

example_list = [10, 20, 30]
example_tuple = tuple(example_list)
print(example_tuple)  # (10, 20, 30)


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

Перейти к следующему шагу

Комментарии