【问题标题】:Using the index of a for loop to name new objects inside the loop [duplicate]使用for循环的索引来命名循环内的新对象[重复]
【发布时间】:2021-03-03 00:40:00
【问题描述】:

我想运行一个索引为 i 的 for 循环,以便我可以(在每个循环内)定义一个名称为 A_indarray。更具体地说,我希望它看起来像

for i in range(numer):
    A_i = M

其中M 是一些在上一步中定义的ndarray。我正在寻找的方式可能让人想起适用于字符串的 .format() 方法。

【问题讨论】:

  • 可以查看here
  • @GirishSrivatsa 我用列表和字典都试过了,但是(对于我正在编写的代码)将这些对象设置为A_i 更有意义,而不是说, A[i].
  • 是的,下面给出了一种基于全局或​​基于exec的方法。它们都应该没问题?
  • @GirishSrivatsa 是的,但是那里的人评论说不建议这样做。但如果这是唯一的方法,我猜会这样做

标签: python numpy for-loop


【解决方案1】:

您可以使用 globals() 或 locals() 方法创建所有对象,具体取决于您希望对象具有全局作用域还是局部作用域。

for i in range(10):
    globals()[f'A_{i}'] = M

for i in range(10):
    locals()[f'A_{i}'] = M

不过,这不是一个强烈推荐的做法。

【讨论】:

  • 不仅不推荐,更不推荐“高度”,locals() 的文档明确指出:“不应修改此字典的内容”。
  • 我同意。事实上,我在回答中指出这是一种不推荐的做法。但是,我认为对它进行理论化并揭示语言提供的不同可能性是合适的。
  • 猜我们不同意。我不认为向人们展示如何做某事很有帮助或启发性——这个网站已经有很多这样的东西没有你的“贡献”。还有一个事实是,无论如何动态创建变量本身就是一种糟糕的编程实践(如果您阅读过任何有关为什么会这样的链接问题和文章,您就会知道)。
猜你喜欢
  • 2020-06-07
  • 2016-11-18
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2013-04-10
  • 2013-10-15
相关资源
最近更新 更多