问题在于它们在内存中都是完全相同的列表。当使用
[x]*n语法时,得到的是n许多x对象的列表,但是它们都是对同一对象的引用。它们不是不同的实例,而是n对同一实例的引用。
要列出3个不同的列表,请执行以下操作:
x = [[] for i in range(3)]
这为你提供了3个单独的实例
[],这是你想要的
[[]]*n类似于
l = []x = []for i in range(n): x.append(l)
虽然
[[] for i in range(3)]类似于:
x = []for i in range(n): x.append([]) # appending a new list!
In [20]: x = [[]] * 4In [21]: [id(i) for i in x]Out[21]: [164363948, 164363948, 164363948, 164363948] # same id()'s for each list,i.e same objectIn [22]: x=[[] for i in range(4)]In [23]: [id(i) for i in x]Out[23]: [164382060, 164364140, 164363628, 164381292] #different id(), i.e unique objects this time


![Python初始化列表列表[重复] Python初始化列表列表[重复]](http://www.mshxw.com/aiimages/31/456380.png)
