2016-07-14 10 views
-5

ラムダの2つのモデルを見て、それらの代わりに使用することはできませんでした。あなたは次のように仮定します:ラムダの2つの定義の違いは何ですか?

これは、lambda、x:x、最後にlist(y)の名前で開始されていることがわかります。以下のように仮定します。

languages = ["HTML", "JavaScript", "Python", "Ruby"] 
print max(languages,key=lambda x:x=="Python") 

例ではこれが見つかりました。この場合、パラメータはラムダと等しく、リストの名前は最初にあり、最初のものとは全く異なります。 2つの異なる定義がありますか? ありがとう

+1

'lambda x:x ==" Python "と' lambda student:student.score' - ラムダ関数と全く同じ構文です。 'map'と' filter'は異なる関数であるため、投稿した2つのケースは異なります。 – khelwood

+0

'x'と' student'はそれぞれの場合のパラメータの名前に過ぎません。わかりやすい名前を選ぶため、グラフはプロットされていなければ意味が分かりません。両方を試しましたか?何か違いはありましたか?他人のコードをコピーするのは良い方法ではありません。 http://www.diveintopython.net/power_of_introspection/lambda_functions.htmlを読んでみてください。 – cdarke

答えて

0

docsより。

フィルタ機能反復可能(リスト)かかり [すなわちfilter(function, iterable)]

最初の引数としてラムダ(lambda x:x=="Python")を渡しています。

最大がかかり反復可能とファンクション「キー」単一の引数(この場合) [すなわちmax(iterable[, key])]

ラムダ(lambda student: student.score)を第2の名前付きキー引数として渡しています。

両方のラムダは同じラムダ構文です。おそらく、2番目の関数はラムダを関数に渡すためにキーワード引数(key=...)を使用するため、混乱しているでしょうか?

0

私は答えます。これらは古いバージョンであり、上記のpaython 3では受け入れられません。それは以下のように使用可能になります

squares=[x**2 for x in range(1,11)] 
c=max(filter(lambda x: x>=30 and x<=70,squares)) 
print (squares) 

print (c) 

または

f=[1,2,3,4,5,6,7,8,9] 
print(list(filter(lambda x:x%2==0,f))) 
print(max(filter(lambda x:x%2==0,f))) 

あなたの知識が古いです。

関連する問題