Список материализует элементы, а генератор вычисляет их по мере запроса. Но само наличие списка не означает глубокую копию данных: обычно в нём хранятся ссылки на те же объекты.
Что из этого (список и генератор) является копией данных, а что нет?
Список материализует элементы, а генератор вычисляет их по мере запроса. Но само наличие списка не означает глубокую копию данных: обычно в нём хранятся ссылки на те же объекты.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Список материализует элементы, а генератор вычисляет их по мере запроса. Но само наличие списка не означает глубокую копию данных: обычно в нём хранятся ссылки на те же объекты.
list(existing_list) создаёт новый внешний контейнер, сохраняя ссылки на вложенные объекты; присваивание b=a вообще не копирует список. Генератор хранит состояние вычисления и может читать изменяемый источник позже, поэтому не обязательно является снимком. Кроме того, он обычно одноразовый: после исчерпания нужно создать новый. Точный ответ зависит от выражения создания; для независимой копии вложенных структур нужна отдельная политика копирования.