附加嵌套列表 - 它应该以这种方式工作吗?

时间:2012-10-07 23:22:01

标签: python

  

可能重复:
  Unexpected feature in a Python list of lists
  How to initialize a two-dimensional array in Python?

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

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

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

现在我执行类似a[1].append(3)的操作,它会为我提供输出[[3], [3], [3], [3]]

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

2 个答案:

答案 0 :(得分:3)

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

您需要执行类似a = [[] for _ in xrange(4)]的操作。

答案 1 :(得分:0)

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

b=[]
a=[b]*4

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