参考学習:Liao Xuefengpythonの公式ウェブサイト
最初に関数map()を導入します
**map()**は、提供された関数に従って指定されたシーケンスをマップします。
最初のパラメータ関数は、パラメータシーケンスの各要素を使用して関数関数を呼び出し、各関数関数の戻り値を含む新しいリストを返します。
構文:map(function、iterable、...)
パラメータ
(新人チュートリアルを参照してください)
>>> def square(x): #二乗数を計算する
... return x **2...>>>map(square,[1,2,3,4,5]) #リストの各要素の二乗を計算します
[1,4,9,16,25]>>> map(lambda x: x **2,[1,2,3,4,5]) #ラムダ匿名関数を使用する
[1,4,9,16,25]
# 同じ位置にリストデータを追加するために、2つのリストが用意されています
>>> map(lambda x, y: x + y,[1,3,5,7,9],[2,4,6,8,10])[3,7,11,15,19]
ラムダ匿名関数の導入を開始
関数を渡す場合、関数を明示的に定義する必要がない場合があり、匿名関数を直接渡す方が便利です。 Pythonでは、匿名関数のサポートが制限されています。例として map()
関数を取り上げます。f(x)= x2を計算する場合、 f(x)
の関数を定義することに加えて、
匿名関数を直接渡すこともできます。
>>> list(map(lambda x: x * x,[1,2,3,4,5,6,7,8,9]))[1,4,9,16,25,36,49,64,81]
比較すると、匿名関数 lambda x:x * x
は実際には次のようになっていることがわかります。
def f(x):return x * x
キーワード lambda
は匿名関数を表し、コロンの前の x
は関数パラメーターを表します。
匿名関数には制限があります。つまり、 return
を記述せずに、式は1つしか存在できず、戻り値は式の結果です。
関数には名前がないため、匿名関数を使用する利点があります。したがって、関数名の競合について心配する必要はありません。さらに、匿名関数は関数オブジェクトでもあります。匿名関数を変数に割り当ててから、その変数を使用して関数を呼び出すこともできます。
>>> f = lambda x: x * x
>>> f
< function<lambda> at 0x101c6ef28>>>>f(5)25
同様に、匿名関数も次のような戻り値として返すことができます。
def build(x, y):return lambda: x * x + y * y
匿名関数の演習例:
( この関数をラムダ式に変更します)
def is_odd(n):return n %2==1
L =list(filter(is_odd,range(1,20)))
変更後のラムダ