【问题标题】:For loop a list to name variables in PythonFor循环列表以在Python中命名变量
【发布时间】:2020-03-22 13:52:10
【问题描述】:

我正在尝试使用列表元素来命名变量。

我有 3 家公司,分别名为 absoftdatacomicrom

在我的脚本中,我为类似这样的方法定义了一些方法:

copyfile(absoft_old_file, absoft_copy)
copyfile(dataco_old_file, dataco_copy)
copyfile(microm_old_file, microm_copy)

是否可以从列表中循环这些名称?字符串很简单,但是变量名我还没想好怎么做。

company_list = [absoft, dataco, microm]

for company in company_list:
copyfile(company + _old_file, company + _copy)

请帮忙

【问题讨论】:

  • 这样的问题应该总是解释为什么他们在估计的 0.000000000001% 的案例中,这确实是一个比正常方式更好的主意。
  • for company in ['absoft', 'dataco', 'microm']: copyfile(globals()[f'{company}_old_file'], globals()[f'{company}_copy'])
  • 请不要提出这样的建议。实际上,没有人有充分的理由这样做,每个提出问题的人都最好通过解释原因而不是可能的方法。
  • “为什么”很好。在这里,我有 3 家公司的简短列表,但想要创建一个完全自动化的解决方案 - 比如说我想在未来向这 3 家公司添加另外 100 家公司,我如何使这段代码尽可能可扩展,以便我所要做的一切是否将那些未来的公司添加到 company_list 中?

标签: python list for-loop variables naming


【解决方案1】:

是否可以从列表中循环这些名称?

您不想或不需要这样做来解决您的问题。

你已经知道如何制作列表了。

把真正让你解决问题的东西放到你的清单中。

您有想要重复调用相同函数 (copyfile) 的值。所以这些就是你列表中的值。

例如,你可以有类似的东西:

source_files = [absoft_old_file, dataco_old_file, microm_old_file]
dest_files = [absoft_copy, dataco_copy, microm_copy]

for source, dest in zip(source_files, dest_files):
    copyfile(source, dest)

如果这看起来像是一堆没有任何好处的额外工作,那么问题在于首先创建所有这些单独命名的变量;这些值应直接进入此类列表。要给出具体的答案,您需要更多关于您的整体计划的详细信息。

【讨论】:

  • 我想让这个解决方案自动化并且可扩展,以便将来添加到列表中的其他公司。现在我有 3 家公司,可能还想再添加 100 家——我只想在脚本的开头将它们添加到列表中,让代码找出其余的。为每个添加“anothercompany_old_file”将来会花费太多时间。
  • 就像我说的,不要为它们创建变量 - 立即将它们放入列表中。
猜你喜欢
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2021-11-18
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多