この記事では、Python3の
高次関数といくつかの組み込み関数の例について簡単に説明します。高次関数は、関数をパラメーターとして受け入れることができる関数です。
変数は関数を指すことができ、関数パラメーターは変数を受け入れることができます。
関数は別の関数をパラメーターとして受け入れることができます。
関数をパラメーターとして受け入れることができる関数は高次関数です。
たとえば、単純な高次関数:
def shu_1():
print("宇宙之大")
def shu2(x):
z=x()
print("个人之小")
shu2(shu_1) #参数为函数
例での組み込み関数と高次関数の使用:
- math.sqrt関数(組み込みの数学モジュールの関数)
トピック:数学モジュールで2つの数値の平方根を使用する関数:
import math
def add(x, y, f):
return f(x) + f(y)
#x和y可以传任意传入,f我们则传入一个计算平方根的函数
print(add(25,25,math.sqrt))
- map()関数
map()は、提供された関数に従って指定されたシーケンスをマップします。
使用法:map(function、iterable、…)
function-function、iterable-1つ以上のシーケンス。
タイトル:最初の文字は大文字ではなく、後続の文字は小文字になります。map()関数を使用して、リスト(不規則な英語名を多数含む)を標準化された英語名を含むリストに変換してください。
def format_name(s):
return s.title()
list(map(format_name, ['adam', 'LISA', 'barT']))
- リデュース関数リデュース関数
も、関数としてのパラメータとイテラブルオブジェクトを備えた高次関数であり、戻り値はイテレータオブジェクトではなく値であるため、重ね合わせや乗算でよく使用されます。
トピック:ください使用recude()積を計算する:
入力:[2、4、5、7、12]
出力:結果2 4 5 7 12
from functools import reduce #在Python3中reduce函数不再是内置函数,需要从functools模块导入
def prod(x, y):
return x*y
print(reduce(prod, [2, 4, 5, 7, 12]))
- フィルタ関数
filter()関数は、関数fとリストを受け取ります。この関数fの関数は、各要素を判断してTrueまたはFalseを返すことです。Filter()は、判断結果に従って条件を満たさない要素を自動的に除外し、戻り値は条件付き要素の新しいリスト。
例:filter()を使用して、平方根が1から100までの整数である数値を除外してください。つまり、結果は次のようになります。
[1、4、9、16、25、36、49、64、81、100]
import math
def is_sqr(x):
r=int(math.sqrt(x)) #取整数用下一步计算判断其平方是否等于原值
return r*r==x
list(filter(is_sqr, range(1, 101)))
- ソートされた関数
ソートされた構文:
sorted(iterable、key = None、reverse = False)
パラメーターの説明:
iterable-iterableオブジェクト。
キー-主に要素を比較するために使用されます。パラメーターは1つだけです。特定の関数のパラメーターは、反復可能オブジェクトから取得され、反復可能オブジェクト内の要素を指定して並べ替えます。
逆ソートルール、reverse =降順の場合はTrue、reverse =昇順の場合はFalse(デフォルト)。
sortとsortにはいくつかの違いがあります。sortはリストに適用されるメソッドであり、sortedはすべての反復可能なオブジェクトをソートできます。
listのsortメソッドは既存のリストに対する操作を返しますが、組み込み関数のsortedメソッドは、元のリストに基づく操作ではなく、新しいリストを返します。
トピック:文字列を並べ替えるときは、大文字と小文字の並べ替えを無視する方が一般的な場合があります。大文字と小文字の並べ替えを無視するアルゴリズムを実装するには、sorted()高次関数を使用してください。
入力:['bob'、 'about'、 'Zoo'、 'Credit']
出力:['about'、 'bob'、 'Credit'、 'Zoo']
def cmp_ignore_case(s1, s2):
x = s1.upper()
y = s2.upper()
if x<y:
return -1
if x>y:
return 1
return 0
print(sorted(['bob','about', 'Zoo', 'Credit'], key = lambda x: x.upper())) #注释如下
<!-- 对key = lambda x: x的注释:当待排序列表的元素由多字段构成时,我们可以通过sorted参数key来制定我们根据那个字段对列表元素进行排序。
key=lambda 元素: 元素[字段索引]
例如:想对元素第二个字段排序,则
key=lambda x: x[1] -->
Pythonには、多くの高次関数も組み込まれています。最初にここで終了しましょう。