为每个for循环创建一个新列表

时间:2011-07-11 11:23:53

标签: python

我希望每次for循环运行时都创建一个新列表

#Reading user input e.g. 10
lists = int(raw_input("How many lists do you want? "))
for p in range(0,pooled):
    #Here I want to create 10 new empty lists: list1, list2, list3 ...

有没有聪明的方法呢?

谢谢,

卡斯帕

4 个答案:

答案 0 :(得分:7)

使用列表理解:

num_lists = int(raw_input("How many lists do you want? "))
lists = [[] for i in xrange(num_lists)]

答案 1 :(得分:4)

最简单的方法是创建一个列表列表:

   num_lists = int(raw_input("How many lists do you want? "))
   lists = []
   for p in range(num_lists):
        lists.append([])

然后,您可以使用list[2]访问列表3,使用list[2][i]访问列表3的第i项。

答案 2 :(得分:0)

也许在你的情况下你可以使用defaultdict?

>>> from collections import defaultdict
>>> m=defaultdict(list)
>>> m
defaultdict(<type 'list'>, {})
>>> for i in range(5):
...     len(m[i])
... 
0
0
0
0
0
>>> m
defaultdict(<type 'list'>, {0: [], 1: [], 2: [], 3: [], 4: []})

答案 3 :(得分:0)

要创建我们的列表,我们会动态生成名称并为它们分配一个空列表:

lists = int(input("How many lists do you want? "))
varname = 'list'
for i in range(lists):
    exec(f"{varname}{i} = []")
exec(f'print(f"list{lists-1} is", list{lists-1})')
# list9 is []