我该如何创建多个空列表而不需要手动输入以下内容?
list1=[], list2=[], list3=[]
有没有一个for循环可以让我生成'n'个空列表?
我该如何创建多个空列表而不需要手动输入以下内容?
list1=[], list2=[], list3=[]
有没有一个for循环可以让我生成'n'个空列表?
在这里,使用列表综合最简单:
>>> n = 5
>>> lists = [[] for _ in range(n)]
>>> lists
[[], [], [], [], []]
要小心不要陷入这个陷阱:
>>> lists = [[]] * 5
>>> lists
[[], [], [], [], []]
>>> lists[0].append(1)
>>> lists
[[1], [1], [1], [1], [1]]
如果您想创建不带"列表的列表"的不同列表,请尝试以下方法:
list1, list2, list3, list4 = ([] for i in range(4))
我看到这里的许多答案都会给你很多没有名称赋值的列表(作为更大列表的元素)。这可能并不总是所需的。
使用元组可以创建多个空列表,每个列表具有不同的名称/值:
a,b,c = ([],[],[])
a, b, c = [], [], []
。 - juanbretti使用此代码:
def mklist(n):
for _ in range(n):
yield []
使用方法:
list(mklist(10))
[[], [], [], [], [], [], [], [], [], []]
a, b, c = mklist(3) # a=[]; b=[]; c=[]
其中number是循环中i的值。listnumber = []
x = 3 # Amount of lists you want to create
for i in range(1, x+1):
command = "" # This line is here to clear out the previous command
command = "list" + str(i) + " = []"
exec(command)
name = "my_var" # This has to be a string, variables like my_var1, my_var2 will be created.
value = "[]" # This also has to be a string, even when you want to assign integers! When you want to assign a string "3", you'd do this: value = "'3'"
amount = 5 # This must be an integer. This many variables will be created (my_var1, my_var2 ... my_var5).
for i in range(1, amount+1):
command_variable = ""
command_variable = name + str(i) + " = " + value
exec(command_variable)
exec
几乎总是一个非常糟糕的想法。如果您考虑使用此代码,请改变您的想法并且不要使用它。至少,如果您必须动态创建变量,则使用 globals()[varname] = val
。 - Ericadded, modified, removed, inactive = ([],) * 4
n = 5
>>> lists = [[[]]] for _ in range(n)]
>>> lists
[[[[]]], [[[]]], [[[]]], [[[]]], [[[]]]]