ホームページ  >  記事  >  バックエンド開発  >  Python でよく使用される 5 つの組み込み高階関数の紹介 (コード付き)

Python でよく使用される 5 つの組み込み高階関数の紹介 (コード付き)

不言
不言転載
2019-04-12 11:29:574023ブラウズ

この記事では、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]

2,

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,

sorted() 関数 すべての反復可能なオブジェクトに対して並べ替え操作を実行します。

sort とsorted の違い:

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:&#39;D&#39;, 2:&#39;B&#39;, 3:&#39;B&#39;, 4:&#39;E&#39;, 5: &#39;A&#39;}))
# 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(&#39;call f()...&#39;)
    # 定义函数g:
    def g():
        print(&#39;call g()...&#39;)
    # 返回函数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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。