2012-10-07 25 views
0

可能重复:
Unexpected feature in a Python list of lists
How to initialize a two-dimensional array in Python?追加嵌套列表 - 是否应该这样工作?

我想创造n大小的嵌套列表,然后逐一根据标准的项目追加到它。

为此,我这样写以下(n大小= 4)

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

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

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

回答

3

你在做什么创建一个列表,其中4个引用到同一个子列表。

您需要改为像a = [[] for _ in xrange(4)]那样做。

0

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

b=[] 
a=[b]*4 

然后,当你说a[1].append(3),这就像说b.append(3)。并且由于a包含四个对同一列表的引用,因此当您打印a时,您会看到它出现四次。