2016-07-19 11 views
-1

trueを返してリストをフィルタリングする関数で2つの引数を渡すことはできますか? 私はユーザーからの約束を得ようとしていますし、配当はリストから拾い上げるべきです。filter()に渡すことができる引数の数

new_list=[1,2,3,4,5,6,7,8,9,10] 
    print "Get the divisor" 
    divisor=int(input()) 
    h=lambda x,divisor: x%divisor==0 
    ans=filter(h(x,divisor),new_list) 
    print ans 

答えて

2

周囲の範囲でdivisorが定義されている場合は、可能です。

しかし、その後、あなたは引数としてもはやそれを使用するを必要としないなります

divisor = int(raw_input()) 
ans = filter(lambda x: x % divisor==0, new_list) 
print ans 
0

あなたはあなたのアプローチで2個のエラーがあります:

(1)あなたがする必要はありませんdivisorlambdaの第2引数として定義します。これはinputステートメントで初期化されています。

(2)関数参照をfilterに渡すだけで、関数を呼び出さないでください。

new_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
print "Get the divisor" 
divisor = int(input()) 

h = lambda x: x % divisor == 0 
ans = filter(h, new_list) 
print ans 
0

divisorを引数として渡す必要はありません。あなたは、filter()に最初の引数として関数を呼び出すのではない結果を関数オブジェクトを渡す必要があります

new_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
print "Get the divisor" 
divisor = int(raw_input()) # on Python 2, you want to use raw_input 

# divisor is taken from the parent scope here 
h = lambda x: x % divisor == 0 
ans = filter(h, new_list) 
print ans 

注:それは閉鎖として単に提供されています。 filter()は、常に1つの引数をその関数オブジェクトに渡します。

+0

@Butters: 'filter()'は関数に引数を1つだけ渡します。 –