0

我想做的比下面的例子长一点,但无论如何,它不起作用,我不知道如何弄清楚。我需要使用像 strain1, strain2 这样的变量来分配数组,但首先,我试图分配一个空列表[]。如果我不使用函数,那就行得通。我需要多次使用该块,这就是我需要这个功能的原因。

def test():
    for i in xrange(11):
         v = 'strain' + '%d' % i
         vars()[v] = []

test()
strain5

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    strain5
NameError: name 'strain5' is not defined
4

1 回答 1

4

您正在寻找该globals()功能

vars()(不带参数)在本地命名空间的函数中返回当前命名空间,而不是模块全局变量。

演示:

>>> def test():
...     for i in xrange(11):
...          v = 'strain' + '%d' % i
...          globals()[v] = []
... 
>>> test()
>>> strain5
[]

但是,您想重新考虑您的变量。总是,您真的想创建一个列表或字典:

strains = [[] for _ in xrange(11)]

创建 11 个嵌套列表,您可以使用strains[0]strains[1]等访问它们。

于 2013-06-19T14:14:58.053 回答