Python, инициализирующий список списков

Возможный дубликат:
Добавление списка Python

Я намерен инициализировать список списка с длиной n.

x = [[]] * n 

Однако это как-то связывает списки вместе.

 >>> x = [[]] * 3 >>> x[1].append(0) >>> x [[0], [0], [0]] 

Я ожидаю иметь что-то вроде:

 [[], [0], []] 

Есть идеи?

One Solution collect form web for “Python, инициализирующий список списков”

Проблема в том, что все они имеют одинаковый точный список в памяти. Когда вы используете синтаксис [x]*n , то, что вы получаете, это список из n многих объектов x , но все они ссылаются на один и тот же объект. Это не разные экземпляры, а всего лишь n ссылок на один и тот же экземпляр.

Чтобы составить список из 3-х разных списков, выполните следующие действия:

 x = [[] for i in range(3)] 

Это дает вам 3 отдельных экземпляра [] , которые вы хотите

[[]]*n аналогично

 l = [] x = [] for i in range(n): x.append(l) 

Хотя [[] for i in range(3)] аналогичен:

 x = [] for i in range(n): x.append([]) # appending a new list! 

 In [20]: x = [[]] * 4 In [21]: [id(i) for i in x] Out[21]: [164363948, 164363948, 164363948, 164363948] # same id()'s for each list,ie same object In [22]: x=[[] for i in range(4)] In [23]: [id(i) for i in x] Out[23]: [164382060, 164364140, 164363628, 164381292] #different id(), ie unique objects this time 
  • Перемещение значений, но сохранение порядка в списке Python
  • Присоединить список float к разделительной строке в Python
  • Python: найдите последовательное изменение в одном члене пар списка, сообщите другое
  • Ссылка на часть списка - Python
  • Есть ли простой способ удалить элемент списка по значению?
  • Случаи, когда использование кортежа является обязательным
  • Точка безубыточности оптимизации: многократно повторяйте набор или конвертируйте в список в первую очередь?
  • Все возможные варианты zip в Python
  •  
    Interesting Posts for Van-Lav

    порядок выполнения подпроцессов и его влияние на атомарность операций

    То же имя для classmethod и instancemethod?

    Встроенная функция Cython с массивом numpy в качестве параметра

    Как импортировать две версии одного и того же модуля python одновременно?

    Изменение метода запроса с использованием скрытого поля _method в Flask

    После наследования CRM-Lead не удалось скрыть или добавить поля в мой пользовательский модуль в Openerp

    Проверьте, был ли открытый файл удален после открытия в python

    Используя itertools.product и хотите выровнять значение

    Неоднократно добавляется к большому списку (Python 2.6.6)

    Файлы для отдыха для стран G20

    TurtleGraphics Python: Отбрасывая черепаху со стен?

    Извлечение дат в разных форматах с использованием регулярных выражений и их сортировка – панды

    Почему я не могу вставлять выходные данные Pythons REPL без ручного редактирования?

    Html Agility Pack для python

    это простой генератор pythonic

    Python - лучший язык программирования в мире.