首页 > 解决方案 > Python:: 定义函数时如何将 %d 插入变量

问题描述

如何将 %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

此功能目前正在发出各种错误。如何根据我给出的参数 iterA 和 iterB 改变 data2.iter~ 输入变量?例如,如果我将 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)

提前致谢。

标签: python-2.7

解决方案


你想data2成为一个二维数组。然后你可以使用:

if data2[iterA][i] < 0.2:
     if data2[iterB][i] < 0.2:
         #...

好的好的。如果你真的需要这样做,getattr(obj, name)那就是你正在寻找的。IE)

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:
        #...

推荐阅读