为啥 list(my_list) 会修改对象?
Posted
技术标签:
【中文标题】为啥 list(my_list) 会修改对象?【英文标题】:Why does list(my_list) modify the object?为什么 list(my_list) 会修改对象? 【发布时间】:2013-11-13 01:50:15 【问题描述】:我偶然发生了这种奇怪的行为:
>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]
调用list(a)
通过什么机制在其自身的字符串表示中展开一层递归?
【问题讨论】:
【参考方案1】:...
仅在项目包含自身时显示——即,相同的对象。 list(a)
复制列表,因此内部 a
不是同一个对象。它仅在到达“a inside a”时才显示...
,而不是“a inside list(a)
”。
【讨论】:
【参考方案2】:list()
进行浅拷贝。外部列表不再是与其包含的列表相同的对象。它会按照您的预期打印。
【讨论】:
以上是关于为啥 list(my_list) 会修改对象?的主要内容,如果未能解决你的问题,请参考以下文章