Ошибка добавления элементов в список

Рейтинг: 0Ответов: 2Опубликовано: 28.01.2023

Почему элементы дублируются в списках a и b, если добавляется только в a

a = []
b = a
for i in range(10):
    a.append(i)
print(f'{a=} {b=}')

Ответы

▲ 0Принят

В 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)
▲ 1

Списки не переприсваиваются на прямую. Нужно делать копию, чтобы на разную память ссылались.

a = []
b = a.copy()
for i in range(10):
    a.append(i)
print(f'{a=} {b=}')