1

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

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

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

popLen = 5
pop = [None]*popLen

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

pop = [[]]*popLen

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

4

2 回答 2

4

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], [], []]
于 2013-09-01T19:55:15.920 回答
3

你可以做:

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

不要尝试相乘[[]]- 这实际上会起作用,但会做一些与您预期不同的事情(它会给您相同列表的副本,因此您不能单独更改它们)。

于 2013-09-01T19:55:56.820 回答