11

我想要一个变量,它是多个空列表的嵌套列表,我可以稍后填写。看起来像:

my_variable=[[], [], [], []]

但是,我事先不知道我需要多少个列表,仅在创建步骤,因此我需要一个变量a来确定它。我想过 simple my_variable=[[]]*a,但这会创建列表的副本,这不是我想要的。

我可以:

my_variable=[]  
for x in range(a):
   my_variable.append([])

但我正在寻找更优雅的解决方案(最好是单线)。有没有?

4

2 回答 2

18

尝试列表理解

lst = [[] for _ in xrange(a)]

见下文:

>>> a = 3
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], []]
>>> a = 10
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], [], [], [], [], [], [], [], []]
>>> # This is to prove that each of the lists in lst is unique
>>> lst[0].append(1)
>>> lst
[[1], [], [], [], [], [], [], [], [], []]
>>>

但请注意,以上内容适用于 Python 2.x。在 Python 3.x. 上,由于xrange已被删除,您将需要以下内容:

lst = [[] for _ in range(a)]
于 2013-10-08T13:37:06.180 回答
14
>>>[[] for x in range(10)] #To make a list of n different lists, do this:
[[], [], [], [], [], [], [], [], [], []]

编辑 :-

[[]]*10

这将为您提供与上面相同的结果,但列表不是不同的实例,它们只是对同一实例的 n 引用。

于 2013-10-08T13:40:37.783 回答