使用 for 循环来自动化一个函数

Using a for loop to automate a function

我正在尝试使用此代码来计算特定深度的重叠部分,以在不同的深度使用。

def score(list1, list2, depth):
    len_list = len(list1)

    frac = numpy.ceil(depth * len_list)

    frac = int(frac)
    s = slice(0,frac)

    list1 = list1[s]
    list2 = list2[s]

    return len(set(list1)&set(list2)) / float(len(set(list1) | set(list2))) 


if __name__ == "__main__":

    list1 = [2,4,6,8,10]
    list2 = [1,2,3,4,5]

    a = [numpy.arange(.01,1.01,.01)]
    for i in a:
        print(score(list1, list2, i))

但是,当我尝试 运行 此代码时出现错误:

    frac = int(frac)
TypeError: only length-1 arrays can be converted to Python scalars

这意味着变量depth实际上是变量a的列表(即[0.01,0.02..etc])。

我该如何更正这个问题,使函数一次只接受参数 'depth' 的一个参数,而不是整个列表?

谢谢

就像凯文在评论中所说的那样,您的问题是您正在创建一个列表,其中在您的代码 a = [numpy.arange(.01,1.01,.01)] 中包含另一个列表。只需删除多余的括号即可。