Pythonラムダとは何ですか

例は次のとおりです。

func=lambda x:x+1
print(func(1))
#2
print(func(2))
#3

#以上lambda等同于以下函数
def func(x):
    return(x+1)

このように考えると、ラムダは無名関数を式として定義します。上記の例のコードxは入力パラメーターであり、x +1は関数本体です。ここでラムダは関数定義の記述形式を単純化します。コードはより簡潔ですが、関数を定義する方法はより直感的で理解しやすいものです。

Pythonには、使いやすく、フィルタリング、マッピング、縮小が簡単な、明確に定義されたグローバル関数もいくつかあります。

from functools import reduce 
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

print (list(filter(lambda x: x % 3 == 0, foo)))
#[18, 9, 24, 12, 27]

print (list(map(lambda x: x * 2 + 10, foo)))
#[14, 46, 28, 54, 44, 58, 26, 34, 64]

print (reduce(lambda x, y: x + y, foo))
#139

上記の例でのマップの役割は非常に単純で明確です。しかし、Pythonはこのレベルの単純さを達成するためにラムダを使用する必要がありますか?オブジェクトトラバーサル処理に関しては、Pythonのfor..in..if構文はすでに非常に強力であり、読みやすさにおいてラムダを上回っています。   

たとえば、上記のマップの例は次のように書くことができます。print([x * 2 + 10 for x in foo])は非常に簡潔で、理解しやすいです。

フィルタの例は次のように記述できます。print([x for x in foo if x%3 == 0])もラムダよりも理解しやすいです。



おすすめ

転載: blog.csdn.net/wxy_csdn_world/article/details/80759103