この記事では、Python でよく使用される 5 つの組み込み高階関数を紹介します (コード付き)。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。ヘルプ。
Python には一般的に使用される高階関数が組み込まれています:
1. 関数プログラミング
関数自体を変数に割り当てることができます。代入後、変数は関数になります。
関数自体をパラメータとして別の関数に渡すことができます。
#関数を返すことができます。
1. map() 関数
は、Python の組み込み高階関数であり、関数 f とリスト
## を受け取ります。 # そして関数 f を渡し、リストの各要素に順番に作用し、新しいリストを取得してdef add(x): return x+x print(map(add,[1, 2, 3])) # Out:<map object at 0x00000239E833DE48> print(list(map(add,[1, 2, 3]))) # Out:[2, 4, 6]
reduce() function# を返します。
##reduce() 関数も、Python に組み込まれた高階関数です。
reduce() 関数によって受け取られるパラメータは、map()、関数 f およびリストに似ていますが、動作は map() とは異なります。reduce() によって渡される関数 f は、次のパラメータを受け取る必要があります。 2 つのパラメーター
reduce() は、リストの各要素に対して関数 f を繰り返し呼び出し、最終的な結果値を返します。
Python3 では、reduce() 関数がグローバル名前空間から削除されました。現在は functools モジュールに配置されています。使用したい場合は、
次の方法でインポートする必要があります。 reduce() 関数を呼び出す functools モジュール:
from functools import reduce def prod(x, y): return x*y print(reduce(prod, [2, 4, 5, 7, 12])) # Out:3360 # 2*4*5*7*12 # reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100 print(reduce(prod, [2, 4, 5, 7, 12], 100)) # Out:336000 # 2*4*5*7*12*100
3、
filter() function
は、もう 1 つの便利な組み込みです。 Python 高階関数である filter() 関数は、関数 f とリストを受け取ります。
この関数 f の機能は、各要素を判断して True または False を返すことです。filter() は自動的にフィルタリングして、条件を満たさない要素については、
は条件を満たす要素からなる新しいリストを返します。
import math def is_sqr(x): return math.sqrt(x) == int(math.sqrt(x)) print(list(filter(is_sqr, range(1, 101)))) # Out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4,
sort とsorted の違い:
list の sort メソッドは既存のリストに対する操作を返しますが、組み込み関数のsorted メソッドは元のリストに基づく操作ではなく、新しいリストを返します。
sorted(iterable, key=None, reverse=False)
iterable -- 反復可能なオブジェクト。
key -- 主に比較要素に使用され、パラメーターは 1 つだけです。特定の関数のパラメーターは反復可能オブジェクトから取得され、反復可能オブジェクト内の要素がソート用に指定されます。
reverse -- 並べ替えルール。降順の場合は reverse = True、昇順の場合は reverse = False (デフォルト)。
並べ替えられたリストを返します
print(sorted([5, 2, 3, 1, 4])) # Out:[1, 2, 3, 4, 5] print(sorted({1:'D', 2:'B', 3:'B', 4:'E', 5: 'A'})) # Out:[1, 2, 3, 4, 5]
キーを使用して逆順に並べ替えます
example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x*-1) print(result_list)
逆順に並べ替えるには、次の値を渡すこともできます。 3 番目のパラメータ reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) # Out:[7, 6, 5, 4, 3, 2, 1, 0]
5. Python 関数は、int、str、list、dict などのデータ型を返すだけでなく、関数を返すこともできます。
戻り関数と戻り値の区別に注意してください:
def my_abs(): return abs # 返回函数,返回函数可以把一些计算延迟 def my_abs2(x): return abs(x) # 返回函数调用的结果,返回值是一个数值
def calc_prod(lst): def lazy_prod(): prod = 1 for i in lst: prod = prod*i return prod return lazy_prod f = calc_prod([1, 2, 3, 4]) print(f()) # Out:24
5.1. Lazy_prod() 関数と戻り関数 cal_prod() を定義する理由?
Python return 関数の基本構文をサポートします。
def f(): print('call f()...') # 定义函数g: def g(): print('call g()...') # 返回函数g: return g
return 関数の役割のみ:
return 関数は、一部の計算の実行を遅らせる可能性があります。たとえば、通常の sum 関数を定義する場合:
def calc_sum(lst): return sum(lst) print(calc_sum([1,2,3,4])) # Out:10 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum f = calc_sum([1, 2, 3, 4]) print(f) # 代码并没有对函数进行执行计算出结果,而是返回函数,所以打印出来的是类型 #Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18> print(f()) # 对返回的函数进行调用时,才计算出结果 # Out:10
以上がPython でよく使用される 5 つの組み込み高階関数の紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。