← Все вопросы
Меняю один список — меняется и второй. Почему?
18
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4] — почему a тоже изменился??
Я ведь добавлял в b, а не в a.
2 ответа
13
✓ Принятый ответ — помог автору
Главное правило: присваивание b = a НЕ копирует, а даёт второе имя тому же списку. Нужна копия — пиши b = a[:] или b = a.copy().
Валерий Курочкин автор: вот так сразу уложилось в голове, принято · 8 месяцев назад
24
b = a не копирует список, а делает вторую ссылку на тот же объект. a и b — это одно и то же. Чтобы скопировать:
b = a.copy() # или a[:]
b.append(4)
print(a) # [1, 2, 3]
Для вложенных списков нужен copy.deepcopy.
Denis Fadin а для словаря так же работает? · 8 месяцев назад
alex zali вот оно что, ссылки. спасибо большое · 8 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.