Python 如何为循环创建内部列表?
如何使用Python 如何为循环创建内部列表?,python,list,loops,Python,List,Loops,如何使用for循环来获取列表1、列表2、列表3等来创建列表。?(Python) 我试过这个: for i in range(5): i += 1 list_(i) = [] 但不起作用 File test.py, line 3 runner_(i) = [] ^ SyntaxError:无法分配给函数调用创建多个变量不被视为Pythonic。如果要创建一系列变量,最好使用列表,如下所示: dic={} for i in range(5): dic[f&qu
for
循环来获取列表1
、列表2
、列表3
等来创建列表。?(Python)
我试过这个:
for i in range(5):
i += 1
list_(i) = []
但不起作用
File test.py, line 3
runner_(i) = []
^
SyntaxError:无法分配给函数调用创建多个变量不被视为Pythonic。如果要创建一系列变量,最好使用列表,如下所示:
dic={}
for i in range(5):
dic[f"list{i}"]= []
print(dic)
list_of_lists = []
for i in range(5)
list_of_lists.append([])
当您要访问特定列表时:
list_of_lists[3]
-> []
但是,如果你想维护变量名,你可以考虑使用字典,也许类似于:
dict_of_lists = {}
for i in range(5):
dict_of_lists[f'list_{i}'] = []
访问:
dict_of_lists['list_1']
-> []
尝试使用globals()
:
最棒、最酷、最具Python风格的方式是顺便说一句,使用字典
和检索/编辑,如:
list_dicts['list_2']
厌倦了为循环吮吸?听写理解时间:
list_dicts = {'list_'+str(i): [] for i in range(5)}
您可以创建列表列表:
main_list = []
for i in range(5):
sub_list= []
main_list.append(sub_list)
print(main_list)
print(main_list[0])
我强烈建议你不要这样做。创建动态变量很少是一个好主意,它可能会影响性能。您可以始终使用字典,因为它更合适:
lists = {}
lists["list_" + str(i)] = []
lists["list_" + str(i)].append(somevalue)
请查看此处以了解更多解释:
对于此任务,我将选择不同的数据结构dict()
这将使您能够将密钥映射到相应的列表,例如:
my_dictionary={}
对于范围(5)中的i:
my_dictionary[f“list_{i}]=[]。#这可能也是my_dictionary[“list_{i}”+str(i)]
请注意,我使用空列表作为键->值映射
这反过来将生成以下词典:
{"list_0": [], "list_1": [], "list_2": [], "list_3":[], "list_4":[]}
我想您正在搜索locals()
函数,该函数包含所有局部变量。然后你可以写这样的东西
范围(5)内的i的:
局部变量()[“列表”+str(i)]=[]
理想情况下,您应该使用列表或字典。
但是,请使用以下代码满足要求
for i in range(5):
exec("list_%d = []" % (i+1))
希望这是你的答案
for x in range(5):
x += 1
list_name = "list_" + str(x)
list_item = []
print("Printing {0} = ".format(list_name), list_item)
以下是输出:
Printing list_1 = []
Printing list_2 = []
Printing list_3 = []
Printing list_4 = []
Printing list_5 = []
运行代码时会发生什么?你预计会发生什么?在问题中,你只会得到一个缩进错误,它会停止。这回答了你的问题吗?你的意思是用{'list_1':[],'list_2'=[]}
创建一个字典吗?这是一个例子,在我看来,这是做你真正想做的事情的最好方法。它使一个字典有5个列表,你可以访问字典,就像访问一个列表一样,作为一个口述理解:{f“list_{i}:[]对于范围内的i(5)}
。正如@hiroprotation所提到的,对于来自不同语言的人来说,它的可读性会稍差一些。“list_”+i
将抛出一个错误。你必须先把整数转换成字符串。啊,是的,谢谢你@TedKleinBergman这是真的,我更习惯于f字符串。虽然它可以工作,但它绝对不是正确的方法。这更像是一种会导致混乱的黑客行为。OP很可能需要使用列表或字典。几乎没有一种情况下,locals
、globals
或exec
是解决方案。您可以肯定,OP最有可能需要使用列表或字典。几乎没有一种情况下,locals
、globals
或exec
是解决方案。像这样使用exec
更像是一种黑客行为,会导致混乱和潜在的许多未来问题。几乎从来没有一种情况下local
、globals
或exec
是解决方案。因此,虽然globals
在这种情况下有效,但它绝对不是正确的方法。这更像是一种会导致混乱和未来问题的黑客行为。你的其他建议好多了。
for x in range(5):
x += 1
list_name = "list_" + str(x)
list_item = []
print("Printing {0} = ".format(list_name), list_item)
Printing list_1 = []
Printing list_2 = []
Printing list_3 = []
Printing list_4 = []
Printing list_5 = []