Возникла следующая проблема
есть список формируемый приблизительно следующим образом
a = 3
b = 4
lst = [a, b, a]
те если я сделаю lst=10 то lst останется равным 3
Заранее благодарю
a = 3
b = 4
lst = [a, b, a]
>>> a = 3
>>> b = 4
>>> lst = [a, b, a]
>>> lst
[3, 4, 3]
>>> lst[0] = 10
>>> lst
[10, 4, 3]
In [29]: a=[2,4]
In [30]: b=[5,8]
In [31]: lst=[a,b,a]
In [32]: lst
Out[32]: [[2, 4], [5, 8], [2, 4]]
In [33]: lst[0][0]+=5
In [34]: lst
Out[34]: [[7, 4], [5, 8], [7, 4]]
from copy import copy
>>> a = [2,4]
>>> b = [5,8]
>>> lst = [a,b,copy(a)]
>>> lst[0][0]+=5
>>> lst
[[7, 4], [5, 8], [2, 4]]
>>> a = [1,2]
>>> b = [3,4]
>>> lst = [a,b,a]
>>> lst2 = [copy(i) for i in lst]
>>> lst2
[[1, 2], [3, 4], [1, 2]]
>>> lst2[0][0]+=4
>>> lst2
[[5, 2], [3, 4], [1, 2]]
Sher-Khanвместо copy можно
походу придется делать так я просто думал, что есть какой-нибудь встроенный метод
ls2 = ls[:]
PooHа нет не прокатило всеравно остается ссылка на первоначальный обект и он тоже изменяетсяSher-Khanвместо copy можно
походу придется делать так я просто думал, что есть какой-нибудь встроенный методэто “поверхностная” копия, а deepcopy копируют вложенные структурыls2 = ls[:]