Списки, кортежи и срезы
Что это и зачем
list — изменяемая последовательность, tuple — неизменяемая. Оба сохраняют порядок и допускают повторения.
Как это работает
append добавляет один объект, extend перебирает iterable и добавляет элементы. pop удаляет и возвращает элемент. Срез создаёт поверхностную копию, поэтому вложенные изменяемые элементы могут остаться общими.
items = [1, 2]
items.append(3)
print(items)
Когда применять
Используйте list для изменяющегося набора, tuple — для фиксированной записи. Распаковка связывает элементы с именами. sorted создаёт новый список; list.sort сортирует исходный и возвращает None.
Границы применения
Не используйте изменяемый список как ключ dict. Для независимой копии вложенного графа нужен осознанный deepcopy. Проверяйте пустой список перед pop без индекса.
Ошибки и лучшие практики
Кортеж из одного элемента записывают (1,), а не (1). Не присваивайте результат sort обратно списку. append([2, 3]) добавляет один вложенный список.
Понятна идея? Теперь проверим её в действии.