0

可能重复:
Python 列表中的意外功能
如何在 Python 中初始化二维数组?

我想创建一个 nsize 的嵌套列表,然后根据标准将项目一个一个附加到其中。

为此,我写了如下(nsize = 4)

a = [[]] * 4  # which creates on display a = [ [] , [] , [] , [] ]

现在我做了这样的事情a[1].append(3),这给了我输出[[3], [3], [3], [3]]

我在这里做错了什么?不应该只用值 3 更新第二个列表( a[1] )吗?

4

2 回答 2

3

您正在做什么创建一个列表,其中包含对同一子列表的 4 个引用。

你需要做类似的事情a = [[] for _ in xrange(4)]

于 2012-10-07T23:23:31.593 回答
0

是的,它应该以这种方式工作,尽管它经常令人惊讶。相当于这个

b=[]
a=[b]*4

那么当你说a[1].append(3)的时候,就像说一样b.append(3)。并且由于a包含对同一列表的四个引用,因此您在 print 时会看到它出现了四次a

于 2012-10-07T23:26:55.953 回答