[ヒント] Pythonのラムダ式(匿名関数)と組み込み関数の応用

また、匿名関数として知られているラムダ式は、すなわち機能は内部関数を表すために使用される具体的な名前は、唯一のライン表現が含まれていません。

よりシンプルかつコンパクトなラムダ書き込みコードを使用していないが、ラムダ関数のサポート機能は非常に限られている、現在PEP8はもはやラムダを使用することをお勧めしますが、DEF関数を定義することをお勧め Pythonプログラマ、知識と理解として、そうであっても、無名関数は依然として必要です。

  • ただ、ラムダ式、関数本体はDEFよりもはるかに簡単です。
  • ラムダ式は、代わりにコードブロックの本体です。私たちは、ラムダ式に限定されたロジックをパッケージ化することができます。
  • ラムダ関数は、独自の名前空間を持ち、独自の引数リストやグローバル名前空間のパラメータの外側にアクセスすることはできません。
  • ラムダ関数のルックスは、単一の行を書きますが、作業効率を高めるために小さな関数を呼び出すときに目的がスタックメモリを占有していないCまたはC ++インライン関数に相当することはできませんが。

ラムダ構文:lambda argument(s):expression

ラムダ関数は、引数の数を持っていますが、一つだけ表現することができます。ラムダオペレータが任意のステートメントを持つことができない、それはこの関数は任意の変数オブジェクトに割り当てることができ、関数オブジェクトを返します。

ラムダ関数の簡単な例:

lambda x, y: x * y     # 函数输入是 x 和 y,输出是它们的积 x*y
lambda:None     # 函数没有输入参数,输出是 None
>>> a = lambda x: x+1
>>> a(1)
2

# 用 def 函数表示如下:

>>> def a(x):
		return x+1
>>> a(1)
2

DEFラムダ関数との主な違い:

  • ラムダは、自動的に結果を返し、直ちに(NO変数)を通過することができます。
  • ラムダは、コード内の1行だけが含まれています。
  • ラムダは、シンプルな機能とデザインを書くことが、DEFより多くのタスクを処理することです。
  • ラムダは、無名関数を定義することができますが、defを定義した関数は名前を持つ必要があります。

ラムダ関数の利点:

  • 一方向関数の場合は、プロセスが使用するラムダ式への必要性が関数を定義し、より簡潔なコードを作る排除。
  • 機能は、複数の再利用を必要としないために、ラムダ式の使用は、実行後すぐに解放することができ、プログラムの実行のパフォーマンスを向上させます。

ラムダ関数は、多くの場合、いくつかのビルトインの機能で使用されます。

map() 機能:トラバーサルシーケンス、シーケンス動作の各要素、各リスト要素の動作条件を指定するラムダ関数は共通。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7 ,8]
>>> list3 = map(lambda a, b: a + b, list1, list2)     # 将两个列表中对应的元素相加
>>> print(list3)
<map object at 0x000001EA57C07780>
>>> print(list(list3))
[6, 8, 10, 12]

filter() 機能:ラムダ関数の条件は、フィルタリストの要素を指定されたフィルタ動作のための配列要素。

>>> list1 = [1, 2, 3, 4]
>>> list2 = filter(lambda a: a > 2, list1)     # 筛选出列表中大于 2 的元素
>>> print(list2)
<filter object at 0x000001EA57C07898>
>>> print(list(list2))
[3, 4]

reduce() 機能:ラムダ関数を蓄積するための条件は、2つの隣接する要素のリストを指定された配列要素の蓄積動作、のすべてのために。

>>> from functools import reduce
>>> list1 = [1, 2, 3, 4]
>>> list2 = reduce(lambda a, b: a + b, list1)     # 两两相邻元素进行相加操作
>>> print(list2)
10
>>> list2 = reduce(lambda a, b: a * b, list1)     # 两两相邻元素进行相乘操作
>>> print(list2)
24

sorted() 機能:ラムダ関数でソートするリスト内のすべての要素のための条件を指定した操作をソートシーケンスの要素、。

>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8]
>>> list2 = sorted(list1, key = lambda a: abs(4-a))     # 将列表元素按照与 4 的距离从小到大进行排序
>>> print(list2)
[4, 3, 5, 2, 6, 1, 7, 8]

追加情報:「あなたがそれを使用することはお勧めしません、Pythonでラムダ式を記述しないでください。」

149元記事公開 ウォンの賞賛518 ビューに46万+を

おすすめ

転載: blog.csdn.net/qq_36759224/article/details/104399083