2016-06-16 9 views
0

整数のリストを1つの引数として受け取り、単純な数学関数を1つの引数として受け入れる関数を記述しようとしています。次に、整数について数学関数を実行し、結果を第2の関数に入れたいと思います。ここで私が探しているものの概要は次のとおりです。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

何ですか?

func(test_cases, lambda x: x/10) 
func(test_cases, lambda x: x ** 2) 
func(test_cases, numpy.sqrt) 
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

をチェックアウトすることをお勧め