Ошибка добавления элементов в список
Почему элементы дублируются в списках a
и b
, если добавляется только в a
a = []
b = a
for i in range(10):
a.append(i)
print(f'{a=} {b=}')
Источник: Stack Overflow на русском
Почему элементы дублируются в списках a
и b
, если добавляется только в a
a = []
b = a
for i in range(10):
a.append(i)
print(f'{a=} {b=}')
В Python списки - это изменяемый тип данных, а
и b
(a is b
) являются одним объектом:
if id(a) == id(b):
print('mutable')
В Вашем случае лучше сделать так:
a = []
b = []
если необходимо создать поверхностную копию объекта списка:
a = [1, 2, 3, 4]
b = [:]
# ————————
b = a.copy()
Или с помощью библиотеки copy
import copy
a = [1, 2, 3, 4]
b = copy.copy(a)
Если список a
имеет вложенные списки:
import copy
a = [1, 2, [3, 4], [5, 6]]
b = copy.deepcopy(a)
Списки не переприсваиваются на прямую. Нужно делать копию, чтобы на разную память ссылались.
a = []
b = a.copy()
for i in range(10):
a.append(i)
print(f'{a=} {b=}')