2013-07-01 2 views
1

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

array = [[]]*5000 
for line in f2: 
    a = line.split() 
    grid = int(a[0]) 
    array[grid].append(a[1]) 

print Counter(array[0]).most_common(10) 

проблема, когда я делаю счетчик он делает это так, как будто весь массив списков был фактически только один список. Есть ли что-то очевидное, что я поступаю неправильно? Благодаря

ответ

7

Использование [[]]*5000, вы создаете ссылку на тот же список в вашем внешнем списке. Таким образом, если вы измените какой-либо список, он изменит их все.

Вы можете получить различные списки, как это:

a = [[] for _ in xrange(5000)] 
+0

Этот ответ является дубликатом около 1000 других вопросов, Python, где список списков инициализируется таким образом. Я думаю, нам нужны «ответы на часто задаваемые вопросы», и тогда мы можем просто сказать «см. FAA № 27» или что-то еще. Другие кандидаты: «Синтаксическая ошибка в строке N означает несогласованные круглые скобки на линии N-1», «Сравнение 1 <'0» не даст результата, который, по вашему мнению, будет, потому что это разные типы ». Хм, я думаю, я опубликую новый вопрос сообщества Wiki ... – PaulMcG

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