我想要做的是比下面的例子稍微长一点,但无论如何,它不起作用,我不知道如何弄明白。我需要使用变量如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
答案 0 :(得分:4)
您正在寻找globals()
function。
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]
等访问这些列表。