pythonにおけるabs&map&reduceの概要

1593 ワード

abs関数
関数自体を変数>>f=abs変数に割り当てることができます>>f=abs>>f(-10)10 abs関数は実際にimport builtinsモジュールに定義されているので、abs変数を修正する指向を他のモジュールでも有効にするには、import builtinsを使用します.builtins.abs = 10
伝達関数ある関数はパラメータとして別の関数を受信し、この関数を高次関数と呼ぶ.

def add(x, y, f):
return f(x) + f(y)

add(−5,6,abs)を呼び出すと,パラメータx,y,fはそれぞれ−5,6,absを受信し,関数定義に基づいて計算過程を導くことができる.

x = -5
y = 6
f = abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11

map
map()関数は2つのパラメータを受信し、1つは関数であり、1つはIterableであり、mapは入力した関数をシーケンスの各要素に順次作用させ、結果を新しいIteratorとして返す.

>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map()が入力する最初のパラメータはfです.すなわち、関数オブジェクト自体がlist()関数を介してシーケンス全体を計算し、listを返してこのlistのすべての数字を文字列に変換します.

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

reduce
reduceは1つの関数を1つのシーケンスに作用させる[x 1,x 2,x 3,...]で行ないます.この関数は2つのパラメータを受信する必要があります.reduceは結果をシーケンスの次の要素と累積計算し続けます.その効果は次のとおりです.reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
シーケンス[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