2013-09-01 2 views
1

Я пытаюсь выяснить, как добавить список в список в Python. Например, код, который я использовал до этого было просто:Создание подписок в списках в Python

pop = [[],[],[],[],[],[],[],[],[],[]] 

Но я хочу, чтобы добавить пользовательский ввод длины поп-массива, то есть. сколько массивов добавлено. Я посмотрел на некоторые другие вопросы StackOverflow, и некоторые из них предложили что-то вроде:

popLen = 5 
pop = [None]*popLen 

Но когда я пытаюсь что создает список с 5 Ничей элементов вместо пустого массива. Я пробовал:

pop = [[]]*popLen 

Каков правильный способ для подписок?

+0

Ваш код не выдавал бы никакой ошибки. Но у него есть и другая проблема. –

ответ

3

pop = [[]]*popLen должен работать, но это, вероятно, не то, что вы хотите, так как оно создает список, заполненный вложенный список жеpopLen раз, а это означает, что изменение одного из элементов списка будет отображаться в других:

>>> a = [[]] * 3 
>>> a[0].append(42) 
>>> a 
[[42], [42], [42]] 

Лучшей альтернативой было бы

pop = [[] for _ in range(popLen)] # use xrange() in Python 2.x 

, который устраняет эту проблему:

>>> a = [[] for _ in range(3)] 
>>> a[0].append(42) 
>>> a 
[[42], [], []] 
3

Вы можете сделать:

pop = [[] for x in range(popLen)] 

Не пытайтесь умножать [[]] - что будет на самом деле работает, но делать что-то другое, чем вы ожидаете (это даст вам копии одного и того же списка, так что вы не могут самостоятельно их изменять).

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