在Python中创建列表中的子列表

时间:2013-09-01 19:52:38

标签: python arrays

我正在试图弄清楚如何在Python中将列表添加到列表中。例如,我之前使用的代码只是:

pop = [[],[],[],[],[],[],[],[],[],[]]

但我想将用户输入添加到pop数组的长度,即。添加了多少个数组。我已经看了一些其他的stackoverflow问题,其中一些提出了类似的建议:

popLen = 5
pop = [None]*popLen

但是当我尝试它创建一个包含5个无元素而不是空数组的列表时。我试过了:

pop = [[]]*popLen

子列表的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

pop = [[]]*popLen应该可以使用,但它可能不是您想要的,因为它创建的列表中填充了相同的嵌套列表popLen次,这意味着更改为一个列表元素将出现在其他元素中:

>>> a = [[]] * 3
>>> a[0].append(42)
>>> a
[[42], [42], [42]]

更好的选择是

pop = [[] for _ in range(popLen)]  # use xrange() in Python 2.x

消除了这个问题:

>>> a = [[] for _ in range(3)]
>>> a[0].append(42)
>>> a
[[42], [], []]

答案 1 :(得分:3)

你可以这样做:

pop = [[] for x in range(popLen)]

不要试图乘以[[]] - 这实际上会有效,但会做出与预期不同的事情(它会为您提供相同列表的副本,因此您无法单独更改它们。)