我正在尝试编写一个函数,它接受一个整数列表作为一个参数,一个简单的数学函数作为第二个。然后我想在整数上运行数学函数并将结果放入第二个函数。以下是我要找的内容的大纲:
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)
这样可行,但我猜测有一个更好的方法,比复制和粘贴代码更好,每次都做一些小改动。
答案 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