使用循环的多个列表

Multiple List using loop

我可以使用循环创建多个列表吗?我想要实现的是创建几个列表例如:

lt_1 = []
lt_2 = []
lt_3 = []
......

以后分别在每个列表中添加项目。我试着按照上面的方式命名每个列表,但是有 20 个列表分别命名,它看起来不太好。所以我尝试使用 for 循环但没有成功。 here 给出的解决方案建议使用字典,但我无法在每个列表中附加项目。此外,我实际上想创建单独的列表(如果可能的话),以便我可以处理每个列表中的每个元素。

我尝试了以下方法(显然行不通)但我想做的是将 lt_z 中的 'z' 作为循环变量而不是变量名传递(希望这使得意义)

for z in range(0,20):
    lt_z = []

P.S。我刚刚开始学习 python 所以我在尝试用字典解决问题时可能漏掉了一些东西。

大多数 pythonic 可能仍在使用 dict:

listDict = {}
for i in range(10):
    listDict[f'lt_{i}'] = []

然后你就可以像单独列表一样使用它了:

>>> print(listDict)
{'lt_0': [], 'lt_1': [], 'lt_2': [], 
 'lt_3': [], 'lt_4': [], 'lt_5': [], 
 'lt_6': [], 'lt_7': [], 'lt_8': [], 
 'lt_9': []}

>>> listDict['lt_2'].append(5)
>>> listDict['lt_2'].append(6)
>>> print(listDict['lt_2'])
[5, 6]

动态创建变量名原则上是可行的,但几乎总是一个非常糟糕的主意。

更新

您询问了 f'lt_{i}' 的工作原理。这只是一个所谓的 f-string。它等同于 'lt_'+str(i)lg_i 的当前值连接起来。参见例如here 有关如何使用 f 弦的更多信息。

您可以使用列表的列表,即嵌套列表,也可以使用包含值的字典作为列表。

如果你想稍后根据名称修改值,使用以值作为列表的字典会有所帮助,如果名称无关紧要,你只想根据 position/index 进行修改,那么你可以使用嵌套列表。 但我认为更好的方法是使用嵌套列表而不是字典,这是一个代码片段:

result = []
for z in range(0,20):
    lt_z = []
    result.append(lt_z)