← Все вопросы

Чем список (list) отличается от кортежа (tuple) и когда вы выбираете один вместо другого?

Задан 2 месяца назад34 просмотров2 ответа
0

В реальной разработке какие данные вы храните в кортежах, а какие - в списках? Приведите конкретный пример из своей практики.

2 ответа

1

Формальная разница одна — кортеж нельзя менять после создания. Но выбирают между ними не поэтому, а по смыслу данных.

Кортеж — это «запись»: несколько разнородных полей, состав которых фиксирован. Координата (x, y), цвет (r, g, b), возврат нескольких значений из функции. Элементов всегда столько же, позиция означает роль.

Список — однородная коллекция неизвестной заранее длины: задачи, строки файла, пользователи. Элементы приходят и уходят, и все «одного сорта».

Из практики: функция возвращает return status, payload — это кортеж; точки маршрута храню списком кортежей [(55.75, 37.61), (59.93, 30.31)]. Бонусы кортежа: страхует от случайной правки и может быть ключом словаря — координаты как ключ кэша, со списком так не выйдет.

Если полей в «записи» больше трёх и путаетесь в индексах — посмотрите namedtuple или dataclass: тот же смысл, но с именами вместо позиций.

1

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

Ваш ответ

, чтобы ответить на вопрос.