Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2013 06:20:08

vm
Зарегистрирован: 2013-03-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Копия вложенного списка

пример 1. работает как надо:

p = [1,2]
q = p[:] #q присваиваем копию p
q[0] = 9 #изменяем 1й элемент q
print p
print q
в этом примере q изменяется, p, как и положено, не изменяется

пример 2. работает не так как надо:
p = [[1], [2]]
q = p[:]    #q присваиваем копию p
q[0][0] = 9 #изменяем 1й элемент q
print p
print q
здесь почему-то p тоже изменяется
почему во втором примере p меняется и как сделать чтобы p не изменялся?

Офлайн

#2 Март 5, 2013 06:23:26

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Копия вложенного списка

вам нужен deepcopy()



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 5, 2013 06:40:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Копия вложенного списка

vm
почему во втором примере p меняется
Очень полезная ссылка



Отредактировано FishHook (Март 5, 2013 06:41:24)

Офлайн

#4 Март 5, 2013 18:11:06

vm
Зарегистрирован: 2013-03-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Копия вложенного списка

FishHook, как раз там проверял и не понимал почему так работает. прочитал про отличия обычного среза и deepcopy(), теперь стало ясно

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version