Что будет выведено при изменении списка, используемого через несколько переменных в Python

Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.

Короткий ответ

Что ответить на собеседовании

Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какие значения будут напечатаны для переменной list_a и переменной list_b после выполнения кода ниже.

def some_func():
    list_a = [1, 2, 3]
    list_b = list_a
    list_a[0] = 100
    list_b[1] = 20
    print(list_a)
    print(list_b)

Ответ

Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.

Присваивание list_b = list_a не копирует объект. Изменение индекса 0 через первое имя и индекса 1 через второе относится к одному списку. Чтобы разделить верхний уровень, до изменений используют list_a.copy(). Для вложенных изменяемых объектов поверхностная копия не обеспечивает полной независимости, но для этих целочисленных элементов достаточна.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее