循环访问具有相似名称的一组变量

时间:2014-04-24 10:11:13

标签: python variables loops

有没有办法在python中使用for循环循环一组具有相似名称的变量?

一个例子(来自nltk库): 我有一组名为text1,text2,text3,...,text9的变量,我想对所有这些变量进行某些操作,而不必每次都明确键入它们的名字,所以我正在寻找一种方法像这样循环遍历:

for x in range(1, 9):
    text + x.someFunction()

我知道这是不允许的,但是有办法做这样的事吗?

4 个答案:

答案 0 :(得分:2)

您可以使用eval:

eval("text" + str(1))

例如,要在地图中加载值:

data = dict()
for x in xrange(1, 9):
    key = "text" + str(x)
    data[key] = eval(key)

或者,如果您的变量是具有方法someFunction的类的对象:

for x in xrange(1, 9):
    cmd = "text" + str(x) + ".someFunction()"
    eval(cmd)

答案 1 :(得分:0)

您可以使用eval

for x in range(1, 9):
    eval('text%d' % x).someFunction()

参考:What does Python's eval() do? ;

答案 2 :(得分:0)

试试这个。

for v in (text1, text2, text3):
    v.someFunction()

答案 3 :(得分:0)

列出清单:

texts = [text1, text2, text3, text4, text5, text6, text7, text8, text9]

然后你可以像对待任何其他列表一样迭代它:

for text in texts:

我假设textn变量不会发生变化。如果您正在使用nltk.book中的示例数据,我相信这个假设应该成立。