我遇到了以下蟒蛇拼图:
x=4*[[]] # x is now [[],[],[],[]]
for i in range(len(x)): x[i]+=[i];
print x;
# this returns [[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3]]
现在,如果我改为:
x=[[],[],[],[]];
for i in range(len(x)): x[i]+=[i];
print x;
# this returns [[0],[1],[2],[3]]
问题是,为什么?
我还发现如果代码改为
x[i] = x[i] + [i]
然后我们在两种情况下都有
[[0],[1],[2],[3]]
有人知道为什么python会以这种方式运行吗?
编辑:我的问题的前半部分在重复参考中得到解答,下半部分由@joriki解释。