2015-01-30 5 views

ответ

7

Когда вы делаете:

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 
>>> 
2

Легко, потому что каждый объект будет иметь ссылку на себя в третьем элементе , Для достижения [1, 2, [1, 2]] воспользуйтесь копией списка.

l.append(l[:]) 
Смежные вопросы