Кортежи в Python: способы создания и практические примеры

Раздел: Структуры данных -> Кортежи

Основные способы создания кортежей

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

coordinates = (55.7558, 37.6173)
print(coordinates)    # (55.7558, 37.6173)
print(type(coordinates))  # 

добавить в кортеж python (добавление элемента в кортеж в python)

Элементы могут быть любого типа, в том числе вложенные кортежи:

nested = (1, 'a', (3, 4))
print(nested)   # (1, 'a', (3, 4))

элементы кортежа python (элементы кортежа в python)

Как создать кортеж без круглых скобок?

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

t = 1, 2, 3
print(t)          # (1, 2, 3)
print(type(t))    # 

создание кортежей python (создание кортежа в python)

Этот приём часто используется при множественном присваивании (распаковке).

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

a = 1,     # кортеж (1,)
b = 1      # целое число 1

тип tuple python (тип tuple в python)

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

Как создать пустой кортеж?

Пустой кортеж создаётся с помощью пустых круглых скобок () или конструктора tuple() без аргументов.

empty1 = ()
empty2 = tuple()
print(empty1, empty2)   # () ()
print(type(empty1))      # 

Нельзя создать пустой кортеж без скобок, просто поставив запятую - это приведёт к синтаксической ошибке или созданию кортежа с одним элементом (если перед запятой есть значение).

Как создать кортеж с одним элементом?

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

single = (42,)
print(single)          # (42,)
print(len(single))     # 1

not_a_tuple = (42)
print(not_a_tuple)     # 42 - это целое число, не кортеж

Ошибка: (42) - это число в скобках, а не кортеж. Для кортежа нужна запятая: (42,).

Как создать кортеж из итерабельного объекта с помощью tuple()?

Конструктор tuple(iterable) принимает любой итерабельный объект (список, строку, словарь, range и т.д.) и возвращает кортеж из его элементов.

lst_to_tuple = tuple([1, 2, 3])
str_to_tuple = tuple('hello')
range_to_tuple = tuple(range(5))
print(lst_to_tuple)     # (1, 2, 3)
print(str_to_tuple)     # ('h', 'e', 'l', 'l', 'o')
print(range_to_tuple)   # (0, 1, 2, 3, 4)

Этот способ удобен для преобразования существующей последовательности в неизменяемую форму.

Если передать неитерабельный объект (например, целое число), возникнет ошибка TypeError: 'int' object is not iterable.

Как создать кортеж из строки?

Строка является итерабельной, поэтому её можно передать в tuple(). Каждый символ строки становится отдельным элементом кортежа.

word = 'Python'
chars = tuple(word)
print(chars)          # ('P', 'y', 't', 'h', 'o', 'n')

Таким образом можно быстро получить кортеж символов.

Как создать кортеж из генераторного выражения?

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

squares = tuple(x * x for x in range(5))
print(squares)        # (0, 1, 4, 9, 16)

Это альтернатива созданию кортежа через map или list comprehension с последующим преобразованием.

Если генератор уже был частично исчерпан, tuple() вернёт оставшиеся элементы. После создания кортежа генератор теряется.

Как создать кортеж при распаковке последовательности?

Множественное присваивание в Python создаёт кортеж из значений справа. Например, обмен переменных работает благодаря созданию кортежа.

a, b = 10, 20
print(a, b)          # 10 20
# Здесь справа создаётся кортеж (10, 20), который распаковывается

Также можно присвоить переменным кортеж, чтобы явно создать его:

pair = (x, y) = (1, 2)
print(pair)          # (1, 2)

Этот приём применяется для одновременного присваивания и сохранения кортежа.

Расширенные примеры создания кортежей

Пример
# Создание кортежа из ключей словаря
d = {'a': 1, 'b': 2, 'c': 3}
keys_tuple = tuple(d.keys())
print(keys_tuple)            # ('a', 'b', 'c')

# Создание кортежа из значений словаря
values_tuple = tuple(d.values())
print(values_tuple)          # (1, 2, 3)

# Создание кортежа из пар (ключ, значение)
items_tuple = tuple(d.items())
print(items_tuple)           # (('a', 1), ('b', 2), ('c', 3))
('a', 'b', 'c')
(1, 2, 3)
(('a', 1), ('b', 2), ('c', 3))
Пример
# Использование map для создания кортежа
numbers = [1, 2, 3, 4]
plus_one = tuple(map(lambda x: x + 1, numbers))
print(plus_one)              # (2, 3, 4, 5)

# Использование filter
evens = tuple(filter(lambda x: x % 2 == 0, numbers))
print(evens)                 # (2, 4)
(2, 3, 4, 5)
(2, 4)
Пример
# Создание кортежа из zip
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
combined = tuple(zip(names, scores))
print(combined)              # (('Alice', 85), ('Bob', 92), ('Charlie', 78))
(('Alice', 85), ('Bob', 92), ('Charlie', 78))
Пример
# Кортеж из enumerate
string = 'abc'
enum_tup = tuple(enumerate(string))
print(enum_tup)              # ((0, 'a'), (1, 'b'), (2, 'c'))
((0, 'a'), (1, 'b'), (2, 'c'))
Пример
# Распаковка с * для создания кортежа
first = (1, 2)
second = (3, 4)
merged = (*first, *second)
print(merged)                # (1, 2, 3, 4)

# Из списка с распаковкой
lst = [5, 6, 7]
from_list = (*lst,)
print(from_list)             # (5, 6, 7)
(1, 2, 3, 4)
(5, 6, 7)
Пример
# Кортеж через срез списка
a = [0, 1, 2, 3, 4]
slice_tup = tuple(a[1:4])
print(slice_tup)             # (1, 2, 3)
(1, 2, 3)
Пример
# Кортеж из bytes (итерабельное)
b = bytes([72, 101, 108, 108, 111])
from_bytes = tuple(b)
print(from_bytes)            # (72, 101, 108, 108, 111)
(72, 101, 108, 108, 111)
Пример
# Создание кортежа из range с шагом
r = range(10, 0, -2)
tup_range = tuple(r)
print(tup_range)             # (10, 8, 6, 4, 2)
(10, 8, 6, 4, 2)
Пример
# Кортеж как ключ словаря
d = {}
d[(1, 2)] = 'point'
print(d)                     # {(1, 2): 'point'}

# Кортеж в множестве
s = set()
s.add( (3, 4) )
print(s)                     # {(3, 4)}
{(1, 2): 'point'}
{(3, 4)}
Пример
# Именованный кортеж (не базовый кортеж, но родственный)
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p)                     # Point(x=10, y=20)
print(tuple(p))              # (10, 20) - можно преобразовать в обычный кортеж
Point(x=10, y=20)
(10, 20)
Пример
# Создание кортежа из генератора с условием
nums = (i for i in range(10) if i % 3 == 0)
nums_tuple = tuple(nums)
print(nums_tuple)            # (0, 3, 6, 9)
(0, 3, 6, 9)
Пример
# Множественное присваивание с созданием кортежа
a, *b, c = (1, 2, 3, 4, 5)
print(b)                     # [2, 3, 4] (b - список, но кортеж создаётся справа)
[2, 3, 4]
Пример
# Пустой кортеж через tuple() с аргументом-строкой
empty_str_tuple = tuple('')
print(empty_str_tuple)       # ()
()

Создание кортежа в Python - comments

En
создание кортежей python (python)