Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 12:51   #1
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию [Python3]Многомерные массивы

Доброго времени суток.
Сегодня стоокнулся с интересной проблемой...

Приведу пример с интерактивки:
Код:
>>>ar = [ [0,0], [0,0] ]
>>>ar
[[0,0], [0,0]] 
>>>ar[0][0] = 1
>>>ar
[[1,0], [0,0]]
>>>
>>>ar = [ [0]*2 ]*2
>>>ar
[[0,0], [0,0]] 
>>>ar[0][0] =1
>>>ar
[[1,0], [1,0]]
Что за фигня??
Sna1L вне форума Ответить с цитированием
Старый 31.03.2012, 04:37   #2
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

Не выдержал, написал в хелп@питон.орг
Вот ответ(в сокращении):
Цитата:
> >>>ar = [ [0]*2 ]*2
> >>>ar
> [[0,0], [0,0]]
> >>>ar[0][0] =1
> >>>ar
> [[1,0], [1,0]]

In Python, assignment creates a reference. So:

>>> l1=[0]
>>> l2=l1 # l2 now holds another reference to the list
>>> id(l1)
4299723120
>>> id(l2)
4299723120
>>> l1[0]=42
>>> l2
[42]

Similarly, in your example your outer list contains two references to the same inner list. That's what the * operator does.

If you want a copy of a list (or dict, the same thing applies), you can use the copy module. Or you can use a shortcut that falls out of Python's slicing notation:

>>> l3=l1[:]
>>> id(l3)
4299722904

Regards, Matt

Последний раз редактировалось Sna1L; 31.03.2012 в 04:40.
Sna1L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерные массивы! GoogleDOt PHP 6 15.09.2011 09:33
Многомерные массивы Zina123 Помощь студентам 1 12.12.2010 21:51
одномерные и многомерные массивы. С# junita Помощь студентам 0 03.12.2010 17:19
Многомерные массивы в delphi 7 Миша Л. Помощь студентам 11 07.06.2010 22:06
Многомерные массивы DDP Помощь студентам 1 19.12.2009 19:37