Python 使用for循环的索引命名循环中的新对象

Python 使用for循环的索引命名循环中的新对象,python,numpy,for-loop,Python,Numpy,For Loop,我想运行一个索引为I的for循环,这样我就可以(在每个循环中)定义一个名为a_I的ndarray。更具体地说,我希望它看起来像 for i in range(numer): A_i = M 其中M是在上一步中定义的一些ndarray。我所寻找的方法可能会让人想起适用于字符串的.format()方法。您可以使用globals()或locals()方法创建所有对象,具体取决于您希望对象具有全局范围还是局部范围 for i in range(10): globals()[f'A_{i

我想运行一个索引为
I
的for循环,这样我就可以(在每个循环中)定义一个名为
a_I
ndarray
。更具体地说,我希望它看起来像

for i in range(numer):
    A_i = M

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

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

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

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

尽管如此,这并不是一个强烈建议的做法。

你可以检查@GirishSrivatsa,我在列表和字典中都尝试过,但是(对于我正在编写的代码来说)将这些对象作为,比如说,
a_I
,而不是说,
a[I]更有意义
。是的,下面给出了一种基于globals或基于exec的创建方法。这两种方法都可以吗?@GirishSrivatsa是的,但那里的人评论说不推荐这样做。但如果这是唯一的方法,我猜我也看到了。这不仅不推荐,更不用说“高度”,文档中明确指出:“本词典的内容不应修改”。我同意。事实上,我在回答中指出,这是一种不推荐的做法。然而,我认为适当的理论,并揭示不同的可能性,语言提供。猜测我们不同意。我不认为向人们展示如何不做事情是很有帮助或启发的,没有你的“贡献”,这个网站已经有很多这样的东西了。还有一个事实是,无论如何,动态创建变量本身都是一种糟糕的编程实践(如果您阅读了任何关于为什么会出现这种情况的相关问题和文章,您就会知道这一点)。