【问题标题】:Multiple List using loop [duplicate]使用循环的多个列表[重复]
【发布时间】:2021-06-09 08:43:45
【问题描述】:

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

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

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

我尝试了以下方式(这显然行不通),但我想做的是将 lt_z 中的“z”作为循环变量而不是变量名传递(希望这是有道理的)

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

附:我刚开始学习 python,所以在尝试使用字典的解决方案时可能会遗漏一些东西。

【问题讨论】:

  • 即使您创建了列表,您希望如何使用它们?

标签: python list loops append


【解决方案1】:

大多数 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-strings 的信息。

【讨论】:

  • 好的,这有助于在字典中追加。但是您能帮我解决您在listDict[f'lt_{i}'] 中所做的事情吗?这里的 f 有什么用?
  • @HoppyHOP 查看更新
【解决方案2】:

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

如果您想稍后根据名称修改值,使用带有值作为列表的字典会很有帮助,如果名称无关紧要并且您只想根据位置/索引进行修改,那么您可以使用嵌套列表。 但我认为更好的方法是使用嵌套列表而不是字典,这里是一个代码sn-p:

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

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2015-12-05
    • 2018-05-10
    相关资源
    最近更新 更多