Что такое кортеж (tuple): неизменяемый список

Что такое кортеж (tuple): неизменяемый список Списки, словари, кортежи

Привет! Ты уже знаком со списками — изменяемыми коллекциями, которые можно менять. Но в Python есть и кортежи (tuple) — неизменяемые коллекции. Они похожи на списки, но их нельзя изменить после создания.

В этой статье мы разберём:

  • Что такое кортеж
  • Создание кортежей
  • Доступ к элементам
  • Методы кортежей
  • Разница между tuple и list
  • Когда использовать кортежи

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный Python
  • Базовое понимание списков

Совет: Кортежи — это «замороженные» списки. Они занимают меньше памяти и работают быстрее.

Основная часть

Что такое кортеж

Кортеж (tuple) — это неизменяемая упорядоченная коллекция элементов.

# Создание кортежа
my_tuple = (1, 2, 3)
print(my_tuple)   # (1, 2, 3)

# Кортеж может содержать разные типы
mixed = (1, "hello", 3.14, True)
print(mixed)   # (1, 'hello', 3.14, True)

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

Важно: Кортежи неизменяемы — их нельзя изменить после создания.

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

# С круглыми скобками
t1 = (1, 2, 3)

# Без скобок (запятая создаёт кортеж)
t2 = 1, 2, 3
print(t2)   # (1, 2, 3)

# Кортеж из одного элемента (обязательно запятая!)
t3 = (1,)
print(t3)   # (1,)

# Из списка
t4 = tuple([1, 2, 3])
print(t4)   # (1, 2, 3)

# Из строки
t5 = tuple("hello")
print(t5)   # ('h', 'e', 'l', 'l', 'o')

Совет: Для кортежа из одного элемента запятая обязательна. Иначе это просто число в скобках.

Доступ к элементам

my_tuple = (10, 20, 30, 40, 50)

# По индексу
print(my_tuple[0])   # 10
print(my_tuple[2])   # 30

# Отрицательные индексы
print(my_tuple[-1])  # 50
print(my_tuple[-2])  # 40

# Срезы
print(my_tuple[1:4])  # (20, 30, 40)
print(my_tuple[::2])  # (10, 30, 50)

Совет: Доступ к элементам кортежа работает так же, как у списков.

Кортежи неизменяемы

my_tuple = (1, 2, 3)

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

# Попытка добавить элемент вызывает ошибку
# my_tuple.append(4)   # AttributeError: 'tuple' object has no attribute 'append'

# Попытка удалить элемент вызывает ошибку
# del my_tuple[0]   # TypeError: 'tuple' object doesn't support item deletion

Важно: Кортежи нельзя изменять, добавлять или удалять элементы.

Методы кортежей

У кортежей всего два метода:

my_tuple = (1, 2, 3, 2, 4, 2)

# count() — количество вхождений
print(my_tuple.count(2))   # 3

# index() — индекс первого вхождения
print(my_tuple.index(3))   # 2
print(my_tuple.index(2))   # 1 (первое вхождение)

Совет: Так как кортежи неизменяемы, у них нет методов для изменения (appendpopinsert).

Распаковка кортежей

# Распаковка в переменные
coordinates = (10, 20)
x, y = coordinates
print(x, y)   # 10 20

# Игнорирование значений
person = ("Анна", 25, "Москва")
name, _, city = person
print(name, city)   # Анна Москва

# Расширенная распаковка (*)
numbers = (1, 2, 3, 4, 5)
first, *rest = numbers
print(first)   # 1
print(rest)    # [2, 3, 4, 5]

Совет: Распаковка кортежей очень удобна для возврата нескольких значений из функций.

Кортежи в функциях

# Возврат нескольких значений
def get_user():
    return "Анна", 25, "Москва"

name, age, city = get_user()
print(name, age, city)   # Анна 25 Москва

# Кортеж как аргумент
def print_coordinates(coords):
    print(f"X: {coords[0]}, Y: {coords[1]}")

point = (10, 20)
print_coordinates(point)   # X: 10, Y: 20

Tuple vs List

ХарактеристикаTupleList
ИзменяемостьНетДа
Синтаксис(1, 2, 3)[1, 2, 3]
ПамятьМеньшеБольше
СкоростьБыстрееМедленнее
Методыcount()index()Много методов
ИспользованиеДанные, которые не должны менятьсяДанные, которые могут меняться

Задачи для закрепления

Задача 1. Создай кортеж из чисел 1, 2, 3, 4, 5.

Задача 2. Получи второй элемент кортежа.

Задача 3. Сколько раз число 3 встречается в кортеже (1, 3, 2, 3, 4, 3)?

Задача 4. Попробуй изменить первый элемент кортежа. Что произойдёт?

Задача 5. Распакуй кортеж (100, 200, 300) в переменные a, b, c.

Ответы:

Задача 1.

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple)   # (1, 2, 3, 4, 5)

Задача 2.

print(my_tuple[1])   # 2

Задача 3.

my_tuple = (1, 3, 2, 3, 4, 3)
print(my_tuple.count(3))   # 3

Задача 4.

# TypeError: 'tuple' object does not support item assignment

Задача 5.

a, b, c = (100, 200, 300)
print(a, b, c)   # 100 200 300

Нюансы и подводные камни

Кортеж из одного элемента

# Неправильно (это просто число)
t1 = (1)
print(type(t1))   # <class 'int'>

# Правильно
t2 = (1,)
print(type(t2))   # <class 'tuple'>

Пустой кортеж

empty = ()
print(type(empty))   # <class 'tuple'>

Кортежи с изменяемыми элементами

# Кортеж может содержать изменяемые объекты
t = ([1, 2], [3, 4])
t[0][0] = 99   # OK — изменяем список внутри кортежа
print(t)   # ([99, 2], [3, 4])

# Но нельзя изменить сам кортеж
# t[0] = [5, 6]   # TypeError

Частые ошибки и как их избежать

Ошибка 1: Попытка изменить кортеж

Используй список, если нужна изменяемая коллекция.

Ошибка 2: Забыл запятую для одного элемента

Всегда ставь запятую: (1,).

Ошибка 3: Путаница между tuple и list

Используй кортеж для данных, которые не должны меняться (например, координаты, настройки).

Шпаргалка

Что нужноКак пишется
Создать кортеж(1, 2, 3)
Пустой кортеж()
Кортеж из одного элемента(1,)
Доступ по индексуt[0]
Срезt[1:3]
Количество элементовlen(t)
Количество вхожденийt.count(x)
Индекс элементаt.index(x)
Распаковкаa, b = t

Заключение

Сегодня мы:

  • Узнали, что такое кортеж
  • Научились создавать и использовать кортежи
  • Разобрали методы и особенности
  • Сравнили tuple и list

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×