📖 Теория повторения

⚡ Кратко

Кортеж — упорядоченная неизменяемая коллекция. Список — упорядоченная изменяемая коллекция. Кортежи поддерживают индексы, len(), in, конкатенацию, повторение, count() и index(). Списки дополнительно имеют методы изменения: append(), extend(), insert(), remove(), pop(), clear(), sort(), reverse(). Распаковка делает код с кортежами читаемым, а enumerate() добавляет индекс в цикл.

Кортежи

Кортеж создаётся круглыми скобками и запятыми. Для одного элемента запятая обязательна: (5,). После создания кортеж нельзя изменить: нельзя заменить элемент, добавить новый или удалить существующий.

my_tuple = (1, 2, 3, "apple", True)
single_element_tuple = (5,)
print(my_tuple[0])
print(single_element_tuple)

Кортежи поддерживают операции, похожие на списки: сложение, повторение, проверку in, длину и поэлементное сравнение.

Упаковка и распаковка

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

packed_tuple = 1, 2, 3
a, b, c = packed_tuple
print(a, b, c)

numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers
print(first, middle, last)

enumerate()

enumerate(iterable, start=0) возвращает пары «индекс, значение». Это удобно, когда нужно менять список по индексу или печатать нумерованный список.

languages = ("Python", "Java", "C++")
for index, language in enumerate(languages, start=1):
    print(f"{index}: {language}")

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

У кортежей мало методов, потому что они неизменяемые: count(value) считает вхождения, а index(value) возвращает индекс первого совпадения или вызывает ValueError.

Методы списков

Списки изменяемые, поэтому их методы умеют добавлять, удалять, сортировать и разворачивать элементы. Большинство таких методов меняет исходный список и возвращает None.

sorted() и reversed() отличаются от sort() и reverse(): они не меняют исходную коллекцию. reversed() возвращает итератор, который обычно преобразуют в list, tuple или строку.

Агрегаты

min(), max() и sum() помогают быстро получить минимальное, максимальное и суммарное значение. min() и max() могут принимать key, как сортировка.

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