可能重复:
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])吗?
答案 0 :(得分:3)
您正在做的事情会创建一个列表,其中包含4个对同一子列表的引用。
您需要执行类似a = [[] for _ in xrange(4)]
的操作。
答案 1 :(得分:0)
是的,它应该以这种方式工作,即使它经常令人惊讶。它相当于这个
b=[]
a=[b]*4
然后当你说a[1].append(3)
时,就像说b.append(3)
一样。由于a
包含对同一列表的四个引用,因此当您打印a
时,您会看到它出现四次。