如何将%d插入def代码中的变量中,以使变量根据赋予该函数的参数而变化?
def ratio(iterA, iterB):
a=0.0
b=0.0
for i in range(20000):
if (data2.iter%d[i] % iterA) < 0.2:
if (data2.iter%d[i] % iterB) < 0.2:
a += 1
else:
b += 1
return a/b
此功能当前发出各种错误。如何使data2.iter〜输入变量根据我给定的参数iterA和iterB改变?例如,如果我将iterA设置为1,将iterB设置为15,则希望将生成的代码计算为
a1=0.0
b1=0.0
for i in range(20000):
if data2.iter1[i] < 0.2:
if data2.iter15[i] < 0.2:
a1 += 1
else:
b1 += 1
print(a1/b1)
谢谢。
答案 0 :(得分:1)
您希望data2
是一个二维数组。然后您可以使用:
if data2[iterA][i] < 0.2:
if data2[iterB][i] < 0.2:
#...
好的,好的。如果您确实需要这样做,getattr(obj, name)
是您所需要的。即)
if getattr(data2, 'iter%d' % iterA)[i] < 0.2:
#....
但是不要进行20000次查找!将其移动到循环之前:
listA = getattr(data2, 'iter%d' % iterA)
#...
for i in range(20000):
if listA[i] < 0.2:
#...