Python 2.7中用户定义函数内的数学函数

时间:2016-06-16 11:20:49

标签: python python-2.7

我正在尝试编写一个函数,它接受一个整数列表作为一个参数,一个简单的数学函数作为第二个。然后我想在整数上运行数学函数并将结果放入第二个函数。以下是我要找的内容的大纲:

def func(test_cases, function_of_n): #test_cases=[10, 50, 100], function_of_n can be n/10, n/20, sqrt(n), etc.
    for n in test_cases:
        a = function_of_n(n)
        second_function(n, a)

我遇到的问题是我不知道如何输入简单的数学函数。我发现解决这个问题的一种方法是制作许多不同的函数,如:

def func1(test_cases): #test_cases=[10, 50, 100], function_of_n can be n/10, n/20, sqrt(n), etc.
    for n in test_cases:
        a = n/10
        second_function(n, a)

def func2(test_cases): #test_cases=[10, 50, 100], function_of_n can be n/10, n/20, sqrt(n), etc.
    for n in test_cases:
        a = n**2
        second_function(n, a)

def func3(test_cases, function_of_n): #test_cases=[10, 50, 100], function_of_n can be n/10, n/20, sqrt(n), etc.
    for n in test_cases:
        a = numpy.sqrt(n)
        second_function(n, a)

这样可行,但我猜测有一个更好的方法,比复制和粘贴代码更好,每次都做一些小改动。

2 个答案:

答案 0 :(得分:2)

什么?

func(test_cases, lambda x: x / 10)
func(test_cases, lambda x: x ** 2)
func(test_cases, numpy.sqrt)

答案 1 :(得分:0)

您可以将函数作为参数传递,就像传递变量一样:

def second_function(x, y):
    print x, y

def multi(x):
    return x*10

def func(test_cases, function_of_n):
    for n in test_cases:
        a = function_of_n(n)
        second_function(n, a)


func([1,2,3,4], multi)

我还建议您查看lambda functions