在python中动态访问变量

时间:2017-08-24 11:44:28

标签: python

有9个文本叫做text1,text2,... text9。函数定义如下。

def lexical_diversity(text):
    return len(set(text))/len(text)

我想用以下代码调用所有9个文本的函数。但是outpu是错误的。

for i in range(1,10):
    a='text'+str(i)
    print(lexical_diversity(a))

我的输出是

0.8
0.8
...
0.8

如果将该函数应用于text1,我会得到以下结果。

>>>lexical_diversity(text1)
   Out[37]:0.07406285585022564

哪一部分出了问题?

2 个答案:

答案 0 :(得分:3)

你应该明白a = 'text' + str(i)并没有神奇地赋予a变量text1中包含的内容的值。而是将a分配给字符串 "text1"。这两个相同。

根据名称,您应该考虑将text存储在list中:

texts = [text1, text2, text3, ...]

现在,

for a in texts:
    print(lexical_diversity(a))

答案 1 :(得分:0)

Python3

def lexical_diversity(text):
    return len(set(text))/len(text)
lista = []
for i in range(1,10):
    lista.append("text%d" % i) 
for resVal in lista:
    print(resVal) 
    print(lexical_diversity(resVal))