我知道
[[]] * 10
将给出 10 个相同空的引用,并且
[[] for i in range(10)]
将给出 10 个空列表。但在这个例子中:
def get_list(thing):
return [thing for i in range(10)]
a = get_list([])
a[0].append(1)
print(a)
为什么结果又是
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
EDIT:
与问题不同列表列表更改意外地反映在子列表中,我知道Python不进行复制[x]*10
.
But why []
特殊于[[] for i in range(10)]
?我认为这是不一致的。而不是创建一个空列表[]
然后传递给[ ___ for i in range(10)]
, Python 按字面意思接受“[]”并为每个执行“[]”i
.
那是因为thing
是同一个列表。
In [[] for i in range(10)]
每次都会生成一个新列表。
In [thing for i in range(10)]
它始终是名为的列表thing
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)