Уведомления

Группа в Telegram: @pythonsu

#1 Март 17, 2010 14:30:33

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

а нет не прокатило
Какие ваши доказательства?

Офлайн

#2 Март 17, 2010 14:46:41

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

Ferroman
Какие ваши доказательства?
>>> x = [1,2]
>>> y = x[:]
>>> id(x[0])
10017008
>>> id(y[0])
10017008



Офлайн

#3 Март 17, 2010 14:52:51

Sher-Khan
От:
Зарегистрирован: 2009-10-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

Ferroman
Какие ваши доказательства?
вот они
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]]
In [35]: lst2=lst[:]
In [36]: lst[0][0]+=5
In [37]: lst
Out[37]: [[12, 4], [5, 8], [12, 4]]
In [38]: lst2
Out[38]: [[12, 4], [5, 8], [12, 4]]
In [39]: lst2[0][0]+=5
In [40]: lst2
Out[40]: [[17, 4], [5, 8], [17, 4]]
In [41]: lst
Out[41]: [[17, 4], [5, 8], [17, 4]]



Офлайн

#4 Март 17, 2010 15:19:31

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

PooH
deepcopy копируют вложенные структуры
Похоже только не в этом случае…
>>> import copy
>>> a = [1,2]
>>> b = [3,4]
>>> c = [a,b,a]
>>> d = copy.deepcopy(c)
>>> d
[[1, 2], [3, 4], [1, 2]]
>>> d[0][0] = 800
>>> d
[[800, 2], [3, 4], [800, 2]]
>>> a
[1, 2]
>>> d[0] is d[2]
True
>>> d[0] is a
False



Офлайн

#5 Март 17, 2010 15:25:49

Sher-Khan
От:
Зарегистрирован: 2009-10-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

это все я знаю но deepcopy сохраняет внутренние связи в объекте



Офлайн

#6 Март 17, 2010 15:42:54

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

regall
Это к чему? Я хотел доказательств того, что

всеравно остается ссылка на первоначальный обект и он тоже изменяется
Sher-Khan
Вам же так и написали:
это “поверхностная” копия, а deepcopy копируют вложенные структуры

Офлайн

#7 Июнь 20, 2010 16:15:07

Eliont
От:
Зарегистрирован: 2010-05-30
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

А подскажите пожалуйста, такой метод класса

       def copy(self):
return self
Вернёт ссылку на экземпляр класса, или его независимую копию?



Отредактировано (Июнь 20, 2010 16:16:46)

Офлайн

#8 Июнь 21, 2010 06:37:39

.Serj.
От:
Зарегистрирован: 2008-09-27
Сообщения: 181
Репутация: +  0  -
Профиль   Отправить e-mail  

замена ссылок в списке на их значения

Вернёт ссылку на экземпляр класса, или его независимую копию?
Ссылку, разумеется. Могли бы и сами проверить. Всё же быстрее, чем дожидаться ответа на форуме.
In [1]: class A(object):
...: def copy(self):
...: return self
...:

In [2]: a = A()

In [3]: b = a.copy()

In [4]: print(id(b),id(a))
(23037520, 23037520)



Отредактировано (Июнь 21, 2010 06:38:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version