Ответ
Основное различие заключается в изменяемости (mutability).
- Список (list) — это изменяемая (mutable) последовательность. После создания можно добавлять, удалять и изменять элементы.
- Кортеж (tuple) — это неизменяемая (immutable) последовательность. После создания его содержимое изменить нельзя.
Синтаксис:
my_list = [1, 2, 3] # Квадратные скобки
my_tuple = (1, 2, 3) # Круглые скобки (или просто 1, 2, 3)
Практические последствия и примеры:
-
Изменение элементов:
my_list = [1, 2, 3] my_list[0] = 99 # Допустимо. Теперь список [99, 2, 3] my_tuple = (1, 2, 3) my_tuple[0] = 99 # Вызовет TypeError: 'tuple' object does not support item assignment -
Использование в качестве ключа словаря: Из-за неизменяемости кортежи могут быть ключами словаря, а списки — нет.
valid_dict = {(1, 2): "coordinates"} # Корректно invalid_dict = {[1, 2]: "list"} # Вызовет TypeError: unhashable type: 'list' -
Производительность и намерения: Кортежи обычно работают немного быстрее и занимают меньше памяти. Их использование сигнализирует о том, что данные являются константными (например, точка
(x, y), запись из БД). Списки предназначены для динамических коллекций.
Резюме: Используйте список, когда коллекция должна меняться. Используйте кортеж для фиксированных наборов данных, которые должны оставаться неизменными.
Ответ 18+ 🔞
Давай разберём эту дичь, чтобы ты наконец перестал путать одно с другим, как мартышлюшка с гранатой. Основная разница — в изменяемости, или, на нашем языке, в том, можно ли это дело по ходу дела перетряхнуть.
- Список (list) — это как твой бардак в комнате: положил, убрал, переставил, выкинул. Полная изменяемость, делай что хочешь.
- Кортеж (tuple) — это как застывший в янтаре комар или твой первый тату-хуй с горы на плече: раз сделал — нихуя не изменишь. Неизменяемая штука.
Как выглядят:
my_list = [1, 2, 3] # Квадратные скобки, всё просто
my_tuple = (1, 2, 3) # Круглые скобки. А можно и так: 1, 2, 3 — и всё равно кортеж, ёпта.
А теперь на живых примерах, где собака зарыта:
-
Попытка что-то поменять:
my_list = [1, 2, 3] my_list[0] = 99 # Да без проблем! Теперь список — [99, 2, 3]. Живи, радуйся. my_tuple = (1, 2, 3) my_tuple[0] = 99 # А вот тут тебе Python прямо в сраку: TypeError! Мол, 'tuple' object does not support item assignment. То есть, сиди и не рыпайся, чувак. -
Ключ в словаре — дело серьёзное. Тут кортеж выигрывает вчистую, потому что он неизменный и надёжный, как швейцарские часы. А список — ненадёжный распиздяй.
valid_dict = {(1, 2): "координаты"} # Всё ок, кортеж — он как паспорт, не перепишешь. invalid_dict = {[1, 2]: "список"} # А это уже пиздец: TypeError! Говорит, список — тип 'unhashable'. То есть, доверия к нему — ноль ебать. -
Скорость и намёки. Кортежи обычно чуть шустрее и памяти жрут меньше. А главное — они как сигнал: «Эй, чувак, это фиксированный набор данных, точка (x, y), константа, не трогай!». Список же кричит: «Я динамический! Кидай сюда ещё, убирай отсюда, делай со мной что хочешь!».
Короче, резюме такое:
Берёшь список, когда тебе надо ковыряться, менять, добавлять и жить динамично.
Берёшь кортеж, когда данные должны быть зафиксированы навеки, как твоя глупая татуха, и служить эталоном или ключом.
Всё, теперь ты понял, надеюсь. А если нет — иди на хуй, перечитай.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶