Примеры кортежей в Python для начинающих программистов
Основы работы с кортежами в Python
Кортеж (tuple) представляет собой неизменяемую последовательность элементов. Это одно из наиболее часто используемых структур данных в Python. Основное преимущество кортежа по сравнению со списком - неизменяемость, что позволяет использовать его в качестве ключей словарей и элементов множеств. Ниже приведён базовый пример создания и использования кортежа.
# Создание кортежа из нескольких значений
my_tuple = (10, 'text', 3.14, True)
print(my_tuple) # (10, 'text', 3.14, True)
# Получение элемента по индексу
print(my_tuple[1]) # text
# Длина кортежа
print(len(my_tuple)) # 4
что делает strip в python (метод strip() в python)
(10, 'text', 3.14, True) text 4
математические примеры python (математические примеры в python)
Как создать кортеж различными способами?
Кортеж можно создать несколькими способами: с помощью круглых скобок, функции tuple(), строки без скобок (упаковка) и из итерабельного объекта.
# Способ 1: круглые скобки
a = (1, 2, 3)
# Способ 2: без скобок (упаковка)
b = 4, 5, 6
print(type(b)) #
# Способ 3: функция tuple()
c = tuple([7, 8, 9]) # из списка
# Способ 4: кортеж из одного элемента (обязательно запятая!)
d = (42,) # без запятой получится просто число 42
новые возможности условного оператора python (новые возможности условного оператора в python)
Типичная ошибка: создание кортежа из одного элемента без запятой: e = (42) - это не кортеж, а целое число. Всегда добавляйте запятую после единственного элемента.
Как получить элемент или срез кортежа?
Индексация и срезы для кортежа работают так же, как для строк и списков. Индексы начинаются с нуля, поддерживаются отрицательные индексы.
t = (0, 1, 2, 3, 4, 5)
print(t[2]) # 2
print(t[-1]) # 5
print(t[1:4]) # (1, 2, 3)
print(t[::-1]) # (5, 4, 3, 2, 1, 0)
Float python пример (примеры float в python)
Типичная ошибка: попытка получить элемент по несуществующему индексу вызывает IndexError. Всегда проверяйте длину кортежа перед обращением.
Почему нельзя изменить кортеж?
Кортеж является неизменяемым (immutable) объектом. Попытка присвоить новое значение элементу приведёт к ошибке TypeError.
t = (1, 2, 3)
# t[0] = 100 # TypeError: 'tuple' object does not support item assignment
Python кортежи примеры (примеры кортежей в python)
Распространённый вопрос: как обновить кортеж? Неизменяемость означает, что вы не можете модифицировать существующий кортеж. Можно создать новый на основе существующего, например, с помощью конкатенации или срезов: t = t[:1] + (100,) + t[2:]. Это создаст новый кортеж.
Как кортеж может выступать ключом словаря?
Поскольку кортеж является неизменяемым и хешируемым типом, он может быть использован в качестве ключа словаря или элемента множества. Список для этой цели не подходит.
d = {('Moscow', 2024): 'столица', ('SPb', 2024): 'северная столица'}
print(d[('Moscow', 2024)]) # столица
словарь в python пример (примеры словарей в python)
Типичная ошибка: если кортеж содержит изменяемые элементы (например, список внутри кортежа), такой кортеж не может быть ключом. Python вычислит хеш, но список не хешируется, и возникнет TypeError.
Как вернуть несколько значений из функции с помощью кортежа?
Кортеж часто используется для возврата нескольких значений из функции. При вызове функции результат может быть распакован в переменные.
def min_max(lst):
return min(lst), max(lst) # возвращается кортеж
result = min_max([3, 1, 7, 2])
print(result) # (1, 7)
low, high = result
print(low, high) # 1 7
Распространённая ошибка: забыть распаковать кортеж. Если функция возвращает кортеж, а вы присваиваете результат одной переменной, эта переменная станет кортежем. Для доступа к отдельным значениям используйте распаковку или индексацию.
Расширенные примеры и нестандартные применения кортежей
В данном разделе рассматриваются более сложные конструкции и редкие сценарии использования кортежей.
Именованные кортежи (namedtuple)
Модуль collections предоставляет фабрику именованных кортежей, которые позволяют обращаться к полям по имени, а не по индексу.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'])
p = Point(10, 20, 30)
print(p.x, p.y, p.z) # 10 20 30
print(p[0]) # 10 (индексация также работает)
10 20 30 10
Сравнение кортежей
Кортежи сравниваются поэлементно в лексикографическом порядке. Это полезно для сортировки сложных данных.
t1 = (1, 2, 3)
t2 = (1, 2, 4)
t3 = (1, 2, 3)
print(t1 < t2) # True (3 < 4)
print(t1 == t3) # True
print(t1 > (0, 9)) # True (1 > 0)
True True True
Упаковка и распаковка кортежей
Упаковка - присваивание нескольких значений одной переменной без скобок. Распаковка - присваивание кортежа нескольким переменным.
# Упаковка
packed = 1, 2, 3
# Распаковка
a, b, c = packed
print(a, b, c) # 1 2 3
# Расширенная распаковка с *
first, *middle, last = (10, 20, 30, 40, 50)
print(first, middle, last) # 10 [20, 30, 40] 50
1 2 3 10 [20, 30, 40] 50
Кортеж как элемент множества
Неизменяемость позволяет кортежам быть элементами множества.
my_set = {(1, 2), (3, 4), (1, 2)}
print(my_set) # {(1, 2), (3, 4)} - дубликат удалён
{(1, 2), (3, 4)}
Кортеж и *args в функциях
Оператор *args собирает дополнительные позиционные аргументы в кортеж.
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4)) # 10
10
Преобразование кортежа в список и обратно
При необходимости изменить данные можно преобразовать кортеж в список, отредактировать и снова сделать кортеж.
t = (1, 2, 3)
lst = list(t)
lst.append(4)
t = tuple(lst)
print(t) # (1, 2, 3, 4)
(1, 2, 3, 4)
Сортировка списка кортежей
Часто данные представлены в виде списка кортежей (например, результаты запросов). Сортировка по одному из полей выполняется с помощью параметра key.
students = [('Иван', 22, 4.5), ('Мария', 20, 4.8), ('Пётр', 23, 3.9)]
sorted_by_age = sorted(students, key=lambda s: s[1])
sorted_by_grade = sorted(students, key=lambda s: s[2], reverse=True)
print(sorted_by_grade)
[('Мария', 20, 4.8), ('Иван', 22, 4.5), ('Пётр', 23, 3.9)]
Использование кортежей как констант
Кортежи отлично подходят для хранения неизменяемых конфигурационных данных, дней недели, координат и т.д.
DAYS_OF_WEEK = ('Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс')
# DAYS_OF_WEEK[0] = 'Понедельник' # недопустимо
print(DAYS_OF_WEEK[5]) # Сб
Сб
Кортежи в генераторах списков
Кортежи можно использовать внутри списковых включений для создания структурированных данных.
squares = [(x, x**2) for x in range(5)]
print(squares)
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
Вложенные кортежи
Кортежи могут содержать другие кортежи, что позволяет строить многомерные структуры.
matrix = ((1, 2), (3, 4), (5, 6))
print(matrix[1][0]) # 3
3