一次创建多个空列表列表

时间:2016-12-12 12:14:17

标签: python

我试图以简洁的方式做到以下几点:

n = 3
lst1 = [[] for _ in range(n)]
lst2 = [[] for _ in range(n)]
lst3 = [[] for _ in range(n)]

基本上生成大量相同大小的空列表。

我正在寻找一个单线。我尝试使用zip和各种itertools,但我必须承认这一系列功能是我与Python之间的薄弱环节之一。

3 个答案:

答案 0 :(得分:3)

我建议将所有列表包装在单个列表中,而不是将列表存储在不同的变量中。您的代码应该是:

>>> num_of_list, size_of_list = 5, 3
>>> my_list = [[[] for _ in range(size_of_list)] for _ in range(num_of_list)]

my_list保留的值为:

[
   [[], [], []], 
   [[], [], []], 
   [[], [], []], 
   [[], [], []], 
   [[], [], []]
] 

要访问每个子列表,您只需将索引用作:

>>> my_list[0]
[[], [], []]

>>> my_list[1]
[[], [], []]

如果必须将值存储在单独的变量中,您可以将主列表的内容解包为单个变量:

list1, list2, list3, list4, list5 = my_list

答案 1 :(得分:2)

只需添加一个列表推导或生成器表达式,然后将其解压缩到变量,就可以实现相同的效果:

>>> n = 3
>>> lst1, lst2, lst3 = ([[] for _ in range(n)] for _ in range(3))
>>> lst1
[[], [], []]

答案 2 :(得分:-1)

n = 3
for i in range(1, n+1):
    exec("lst%s = [[] for _ in range(%s)]" % (i, n))

基于To convert string to variable name