Sobes.tech
Назад к вопросам
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 для глубокого копирования.

Это знание помогает избежать неожиданных побочных эффектов при работе со списками и другими изменяемыми объектами.