Найти - Пользователи
Полная версия: замена ссылок в списке на их значения
Начало » Python для новичков » замена ссылок в списке на их значения
1 2
Sher-Khan
Доброго дня уважаемые

Возникла следующая проблема
есть список формируемый приблизительно следующим образом

a = 3
b = 4
lst = [a, b, a]
из этого списка надо получить новый в котором элементы будут не зависимы
те если я сделаю lst=10 то lst останется равным 3

Заранее благодарю
pyuser
Не совсем понятно, чего именно Вы хотите
>>> a = 3
>>> b = 4
>>> lst = [a, b, a]
>>> lst
[3, 4, 3]
>>> lst[0] = 10
>>> lst
[10, 4, 3]
Sher-Khan
извиняюсь не правильно сформулировал задачу это происходит только если a и b списки

вот

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]]
regall
В этом случае вам нужно третьим значением передавать ссылку не на а, а на его копию.
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]]
Sher-Khan
Это я понимаю но дело в том что те списки формируются в другом модуле в который мне лезть не хотелось бы
я хочу просто разобрать на на независимые части полученный список
regall
Самый простой выход - создать новый список с того, который генерируется в другом модуле.
>>> 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
походу придется делать так я просто думал, что есть какой-нибудь встроенный метод
PooH
Sher-Khan
походу придется делать так я просто думал, что есть какой-нибудь встроенный метод
вместо copy можно
ls2 = ls[:]
это “поверхностная” копия, а deepcopy копируют вложенные структуры
Sher-Khan
Спосибо
Sher-Khan
PooH
Sher-Khan
походу придется делать так я просто думал, что есть какой-нибудь встроенный метод
вместо copy можно
ls2 = ls[:]
это “поверхностная” копия, а deepcopy копируют вложенные структуры
а нет не прокатило всеравно остается ссылка на первоначальный обект и он тоже изменяется
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB