Python附加vs列表+列表

时间:2016-04-06 00:11:08

标签: python append

我看了Python list + list vs. list.append(),这是一个类似的问题,但我的问题更多与下面的代码有关

a = [[]] * 4
b = [[]] * 4
a[3] = a[3] + [1]
b[3].append(1)
print a, b

给出了:

[[],[],[],[1]] [[1],[1],[1],[1]]

为什么这两个会有所不同?我从来没有碰到这样的例子,这两种方法有不同的输出......

由于

1 个答案:

答案 0 :(得分:2)

a[3] = a[3] + [1]未修改a[3]。相反,它在那里放了一个新项目。 a[3] + [1]创建一个与a[3]类似的列表,但最后会有一个额外的列表。然后,a[3] = ...将索引a的{​​{1}}设置为该新列表。

3访问b[3].append(1)并使用其b[3]方法。 .append()方法适用于列表本身,并在列表的末尾放置一个。由于.append()创建的列表包含另一个列表的四个副本,因此[[]] * 4方法会在.append()的所有项目中显示其更改。