Назад к вопросам
СБЕР
Senior
3
Что выведет код с присваиванием и изменением списков (семантика ссылок в Python)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Python списки — это изменяемые объекты, и переменные хранят ссылки на эти объекты. При присваивании одной переменной другой обе будут ссылаться на один и тот же список.
Пример:
list1 = [1, 2, 3]
list2 = list1 # list2 ссылается на тот же объект
list2.append(4)
print(list1) # Выведет [1, 2, 3, 4]
Здесь изменение через list2 отражается и в list1, так как это один и тот же объект.
Если же присвоить новый список переменной, то ссылка изменится:
list2 = [5, 6]
print(list1) # [1, 2, 3, 4]
print(list2) # [5, 6]
Таким образом, важно понимать, что присваивание не копирует объект, а лишь копирует ссылку. Для создания копии списка используют методы:
list.copy()- срез
list[:] - модуль
copyдля глубокого копирования.
Это знание помогает избежать неожиданных побочных эффектов при работе со списками и другими изменяемыми объектами.