Python初始化列表

Python初始化列表

我打算初始化一个长度为n的列表。

x = [[]] * n

然而,这以某种方式将列表链接在一起。

>>> x = [[]] * 3>>> x[1].append(0)>>> x[[0], [0], [0]]

我希望有这样的东西:

[[], [0], []]

有什么想法吗?


江户川乱折腾
浏览 1047回答 2
2回答

汪汪一只猫

问题是它们在记忆中都是完全相同的列表。当您使用[x]*n语法,您得到的是n许多x对象,但它们都是对同一个对象的引用。它们不是不同的实例,相反,只是n引用同一个实例。若要列出三个不同的列表,请执行以下操作:x = [[] for i in range(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

慕神8447489

创建一个包含一个空列表的列表。根据需要将空列表追加到外部列表 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python