2011-01-01 3 views
1

В питона вы можете создать список, как так:обновления Список в двух местах

[[0,0]]*n 

Это создает список таких, как это:

[[0, 0], [0, 0], [0, 0]] 

Выпуск при обновлении списка таких как :

li[0][0]=10 
[[10, 0], [10, 0], [10, 0]] 

Есть ли способ создать списки определенного размера с помощью этого метода, но не сталкиваясь с этой проблемой?

Я создал это обходное решение, но есть ли лучший способ?

for x in range(players): 
    li+=[[0]*n] 
+3

Причина, почему это происходит потому, что списки хранятся в виде ссылки - так что, когда вы '[[0,0]] * n', что это интерпретируется как«сделать список '[ 0,0] ', а затем сделать второй список, который является« n »копиями ссылки на этот первый список». – Amber

+0

См. Примечание 2. в онлайн-документации по Python по [Типы последовательностей] (http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange) , – martineau

ответ

3
li = [[0,0] for i in range(players)] 
+0

Спасибо, работает так же, как и я. – Lossy

Смежные вопросы