【问题标题】:How to add a lots of list items in a different list in Python如何在 Python 中的不同列表中添加大量列表项
【发布时间】:2019-07-07 13:24:04
【问题描述】:

我正在创建一个列表 python 文件。在那里我创建了很多列表并每天添加新项目和列表。我想创建一个自动包含以前列表的所有项目的列表。我该怎么办?

list_1=['1','one','first',etc...] 
list_2=['2','two', 'second', '2nd', etc]
.
.
list_x=['x', 'cross']
all_list=list_1+list_2+....+list_x+...   #this will update automatically

怎么做?

【问题讨论】:

  • 这是不可能的。您应该自己跟踪更改并连接代码中显示的列表或单独跟踪添加和删除并相应地更新all_list
  • 如果你的程序运行很长时间,我觉得你不应该使用列表。相反,为什么不使用数据库?
  • 其实我是在创建一个命令列表。并将其导入到一个迷你 AI 程序中。所以我需要将它们放在不同的变量中,并将它们放在一个变量中。

标签: python-3.x list loops


【解决方案1】:

这个问题实际上可以通过选择更合适的数据结构来解决。如果某些项目是相关的,则应将它们一起存储在容器中,例如 dict 或列表列表。这样做既可以使它们更容易访问,也可以清理您的示波器。

all_lists = {
    '1': ['1', 'one', 'first', ...],
    '2': ['2', 'two', 'second', ...],
    ...: ...,
    'x': ['x', 'cross']
}

您现在可以访问特定列表...

list_1 = all_lists['1']

...检查一个项目是否在列表中。

if any(item in lst for lst in all_lists.values())
    print('The item is all_lists')

...或使用嵌套循环遍历所有列表。

for lst in all_lists.values():
    for item in lst:
        print(item)

【讨论】:

  • 答案很棒!但我懒得这么做。这就是我问这个问题的原因,马苏德觉得我的感受和对我的回答是最好的。
  • 这取决于您,请记住,现在的懒惰选择在未来可能会付出高昂的代价
【解决方案2】:

如果您要收集所有列表,此代码可以完成这项工作。

def generate_list():
    l = [globals()[name] for name in globals().keys() if name.startswith('list_')]
    return [item for sublist in l for item in sublist]

list_1 = [1]
list_2 = [2]
list_3 = [3]

print(generate_list())

结果:[1, 2, 3]

【讨论】:

  • 例如list_1 + list_2 + list_3 != [[1], [2], [3]]
  • @ForceBru 编辑了代码。但无论如何,这对 OP 来说是一个线索,我想他/她会知道如何展平列表(如果需要)。对于automatically,我想他想收集列表,而不是让机器人坐在某个地方等待他添加列表并施展魔法。
  • @Masoud 恭喜男孩,它对我有用。我从来没有想过像代码一样沉重的循环。
  • 依靠变量名模式从你的作用域收集值绝不是一个好主意。它会污染您的范围,有碰撞风险并且难以阅读。
猜你喜欢
  • 1970-01-01
  • 2021-07-02
  • 2020-04-11
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2017-02-21
相关资源
最近更新 更多