我偶然发生了这种奇怪的行为:
>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]
通过什么机制调用list(a)
在其自身的字符串表示中展开一级递归?
答案 0 :(得分:5)
...
仅在项目包含自身时显示 - 即同一个对象。 list(a)
制作列表的副本,因此内部a
不是同一个对象。它只显示...
到达“a inside a”,而不是“in list(a)
”。
答案 1 :(得分:2)
list()
制作浅层副本。外部列表不再是与其包含的列表相同的对象。它按照您的预期打印。