l = [1, 2]
l.append(l)
>>>l
[1, 2, [...]] #l is an infinite list
Почему это создать бесконечный список вместо создания:Почему присоединяя список сам по себе создать бесконечный список
l = [1, 2]
l.append(l)
>>>l
[1, 2, [1, 2]]
l = [1, 2]
l.append(l)
>>>l
[1, 2, [...]] #l is an infinite list
Почему это создать бесконечный список вместо создания:Почему присоединяя список сам по себе создать бесконечный список
l = [1, 2]
l.append(l)
>>>l
[1, 2, [1, 2]]
Когда вы делаете:
l.append(l)
ссылка в список l
добавляется в список l
:
>>> l = [1, 2]
>>> l.append(l)
>>> l is l[2]
True
>>>
Другими словами, вы кладете список внутри себя. Это создает бесконечный опорный цикл, который представлен [...]
.
Чтобы сделать то, что вы хотите, вы должны добавить в копию списка l
:
>>> l = [1, 2]
>>> l.append(l[:]) # Could also do 'l.append(list(l))' or 'l.append(l.copy())'
>>> l
[1, 2, [1, 2]]
>>> l is l[2]
False
>>>
Легко, потому что каждый объект будет иметь ссылку на себя в третьем элементе , Для достижения [1, 2, [1, 2]]
воспользуйтесь копией списка.
l.append(l[:])
http://stackoverflow.com/questions/397034/confusing-list-in-python -что это –