Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为循环创建内部列表?_Python_List_Loops - Fatal编程技术网

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 =  []