我试图以简洁的方式做到以下几点:
n = 3
lst1 = [[] for _ in range(n)]
lst2 = [[] for _ in range(n)]
lst3 = [[] for _ in range(n)]
基本上生成大量相同大小的空列表。
我正在寻找一个单线。我尝试使用zip
和各种itertools
,但我必须承认这一系列功能是我与Python之间的薄弱环节之一。
答案 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))