5

我偶然发生了这种奇怪的行为:

>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]

通过什么机制调用list(a)在其自身的字符串表示中展开一层递归?

4

2 回答 2

5

仅当...项目包含自身时才显示 - 即相同的对象。 list(a)制作列表的副本,因此内部a不是同一个对象。它只显示...何时到达“a inside a”,而不是“a inside list(a)”。

于 2013-11-01T19:25:17.160 回答
2

list()做一个浅拷贝。外部列表不再是与其包含的列表相同的对象。它按照您的预期打印。

于 2013-11-01T19:24:43.380 回答