Как создать новый список из текущего с новым id
a =['q','w','e','r','t','y']
b = a
b.pop(2)
print(a)
>>>['q', 'w', 'r', 't', 'y']
как сделать что бы программа работала только со списком Б? Я понимаю, почему так происходит: по факту и А и Б ссылаются на элемент с одним ID и работают с ним. А как это обойти?
Ответы (1 шт):
Автор решения: icYFTL
→ Ссылка
Используйте функцию copy библиотеки copy для поверхностного копирования.
from copy import copy
a = [1,2,3,4]
b = copy(a)
b.pop(1)
print(b) # 1, 3, 4
print(a) # 1, 2, 3, 4
Если нужно скопировать сложный объект, то тут уже необходимо полное копирование, т.е. функция deepcopy:
from copy import copy
a = [[1,2,3], 1]
b = copy(a) # Wrong
b[0][1] = 999
print(b) # [[1, 999, 3], 1]
print(a) # [[1, 999, 3], 1]
from copy import deepcopy
a = [[1,2,3], 1]
b = deepcopy(a) # Correct
b[0][1] = 999
print(b) # [[1, 999, 3], 1]
print(a) # [[1, 2, 3], 1]