Pythonのlambda関数の完全な詳細&巧みな運用
28208 ワード
文書ディレクトリ一、前言 二、lambda文法 三、lambda特性 四、lambdaのよくある使い方 五、lambda用法の高次関数 一、前言
Lambda関数はPythonプログラミング言語で使用頻度が非常に高く、非常に柔軟で巧みに使用されています.では、
---- Nick.Peng
二、lambda文法 lambda関数の構文は1つの文のみを含み、表現形式は以下の通りである: のうち、lambdaはPythonが予約したキーワードであり、[arg...]およびexpressionはユーザによってカスタマイズされる. は以下のように具体的に説明する:[arg...]はパラメータリストであり、その構造はPythonにおける関数(function)のパラメータリストと同じである.[arg...]は非常に多くの形式を持つことができる.たとえば、 三、lambda特性 lambda関数は匿名です.匿名関数とは、一般的には名前のない関数です.Lambda関数には名前がありません. lambda関数には入力と出力があります.入力はパラメータリストargument_に入力されます.listの値、出力は式expressionに基づいて計算された値です. lambda関数は自分のネーミングスペースを持っています.自分のパラメータリスト以外やグローバルネーミングスペースのパラメータにアクセスできず、非常に簡単な機能しかできません.一般的なlambda関数の例: 四、lambdaのよくある使い方
lambda構文は固定されているため,本質的にはlambda関数を定義する1つの用法しかない.実際には、このlambda関数がシーンを適用することによって、lambda関数の使い方を以下のように拡張することができます.1、lambda関数を変数に割り当て、この変数によってlambda関数を間接的に呼び出す.例: 2、lambda関数を他の関数に割り当て、他の関数をこのlambda関数で置き換えます.例: 3、lambda関数をパラメータとして他の関数に渡す.典型的な使い方は、以下によく見られるいくつかの高次関数です.
五、lambda用法の高次関数 map()関数:説明:map()は、提供された関数に基づいて指定されたシーケンスを reduce()関数:説明:reduce()関数は、パラメータシーケンスの sorted()関数:説明:sorted()関数は、反復可能なすべてのオブジェクトに対して filter()関数:説明:filter()関数はシーケンスをフィルタリングし、条件に合致しない要素をフィルタリングし、条件に合致する要素からなる新しいリストを返します.2つのパラメータが受信され、1つ目は関数、2つ目はシーケンスであり、シーケンスの各要素はパラメータとして関数に渡され、TrueまたはFalseに戻り、最後にTrueに戻った要素を新しいリストに配置します.構文: を参照できます.
Lambda関数はPythonプログラミング言語で使用頻度が非常に高く、非常に柔軟で巧みに使用されています.では、
lambda
とは何ですか.どのような使い方とシーンを適用しますか?lambda
の神秘的なところを一緒に解読させていただきます!好文章记得收藏+点赞+关注额!!!---- Nick.Peng
二、lambda文法
lambda [arg1 [,arg2,.....argn]]:expression
a, b
a=1, b=2
*args
**kwargs
a, b=1, *args
......
expressionはパラメータ式であり、式に表示されるパラメータは[arg......]
で定義する必要があり、式は単行でのみ、式は1つのみです.以下はすべて合法的な式です:1
None
a + b
sum(a)
1 if a >10 else 0
......
lambda x, y: x*y # x y, x*y
lambda:None # , None
lambda *args: sum(args) # , ( )
lambda **kwargs: 1 # , 1
lambda構文は固定されているため,本質的にはlambda関数を定義する1つの用法しかない.実際には、このlambda関数がシーンを適用することによって、lambda関数の使い方を以下のように拡張することができます.
add = lambda x, y: x+y
は、加算関数lambda x, y: x+y
を定義し、変数add
に値を付与することに相当し、変数add
は、加算機能を有する関数を指す.このとき、add(1, 2)
を実行すると、その出力結果は3
になります.# time sleep (Mock), :
time.sleep=lambda x: None
# , time sleep 。
# :
time.sleep(3) # 3 , lambda None,
五、lambda用法の高次関数
します.最初のパラメータfunctionは、パラメータシーケンスの各要素でfunction関数を呼び出し、各function関数の戻り値を含む新しいリストを返します.構文:map(function, iterable, ...)
パラメータ:function------>関数iterable------>1つ以上のシーケンス戻り値:Python 2.xバージョンはリストPython 3を返す.xバージョンは反復器の例を返します:# =========== :===========
# 1、
def square(x):
return x ** 2
map(square, [1,2,3,4,5]) #
# :
[1, 4, 9, 16, 25]
# =========== :============
# 2、 ,lambda
map(lambda x: x ** 2, [1, 2, 3, 4, 5])
# :
[1, 4, 9, 16, 25]
# 3、 ,
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
# :
[3, 7, 11, 15, 19]
に対して使用されます.関数は、1つのデータ集合(チェーンテーブル、メタグループなど)のすべてのデータを、reduceに渡された関数function(2つのパラメータがある)で集合の1、2番目の要素を先に操作し、得られた結果を3番目のデータとfunction関数で演算し、最後に1つの結果を得る.構文:reduce(function, iterable[, initializer])
パラメータ:function------>関数、2つのパラメータiterable------>反復可能オブジェクトinitializer------>オプション、初期パラメータ戻り値:関数計算結果を返します.例:# =========== :===========
# 1、
def add(x, y):
return x + y
reduce(add, [1, 3, 5, 7, 9]) # :1+3+5+7+9
# :
25
"""
=========== :===========
reduce(add, [1, 3, 5, 7, 9]) ,reduce :
1 :f(1, 3), 4;
2 3 :f(4, 5), 9;
3 4 :f(9, 7), 16;
4 5 :f(16, 9), 25;
5 , , 25。
"""
# =========== :===========
# 2、 ,lambda
reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
# :
15
# Python sum(), reduce。
# 3、 [1, 3, 5, 7, 9] 13579,reduce :
from functools import reduce
def fn(x, y):
return x * 10 + y
reduce(fn, [1, 3, 5, 7, 9])
# :
13579
を行う.sortとsortedの違い:sortはlistの1つの方法であり、sortedはすべての反復可能なオブジェクトをソートすることができる.Listのsortメソッドは、既存のリストを操作し、戻り値がなく、組み込み関数sortedメソッドは、元の操作ではなく、新しいlistを返します.構文:sorted(iterable[, cmp[, key[, reverse]]])
パラメータの説明:iterable------>反復可能オブジェクト.cmp------>比較の関数です.これは2つのパラメータを持ち、パラメータの値は反復可能なオブジェクトから取り出されます.この関数が守らなければならないルールは、大きい場合は1を返し、小さい場合は-1を返し、等しい場合は0を返します.key------>は主に比較に使用される要素で、1つのパラメータしかありません.具体的な関数のパラメータは反復可能なオブジェクトから取り、反復可能なオブジェクトの1つの要素を指定してソートします.reverse------>ソート・ルール、reverse=True降順、reverse=False昇順(デフォルト).戻り値:並べ替えられたリストを返します.例:# =========== :===========
# 1、
a = [5,7,6,3,4,1,2]
b = sorted(a) # sorted, , a
print(a)
[5, 7, 6, 3, 4, 1, 2]
print(b)
[1, 2, 3, 4, 5, 6, 7]
# =========== :===========
L=[('b',2),('a',1),('c',3),('d',4)]
# 2、 cmp
sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
# :
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# 3、 key
sorted(L, key=lambda x:x[1])
# :
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# 4、
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2])
# :
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
# 5、
sorted(students, key=lambda s: s[2], reverse=True)
# :
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
filter(function, iterable)
パラメータ:function---->判断関数.iterable------>反復可能オブジェクト.戻り値:Pyhton 2.7リストに戻るPython 3.xは反復器オブジェクトを返します.詳細は、Python 3 filter()関数の例:# =========== :===========
# 1、
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))
# : [1, 3, 5, 7, 9]
# =========== :===========
# 2、 [1, 2, 3] 3
newlist = filter(lambda x: x % 3 == 0, [1, 2, 3])
print(list(newlist))
# : [3]