高次関数とは何ですか?
高次関数:関数をパラメーターとして別の関数に渡すか、関数の戻り値が別の関数であり(戻り値が関数自体の場合は再帰的です)、そのうちの1つが高次関数です。
map()マッピング関数
上の図に示すように、map()関数は実際には1対1のマッピング関係です
使用法:map()関数は2つのパラメーターを受け取ります。1つは関数で、もう1つはシーケンスです。マップは、渡された関数をシーケンスの各要素に順番に適用し、結果をイテレーターとして返します。
- 注:map()関数はイテレーターを返します。イテレーターは手動でシーケンスに変換する必要があります
栗を与える:
コード:
func = lambda x: x**2
効果は次のとおりです。
>>> map(func, [1, 2, 3, 4, 5])
<map object at 0x00000268C7446188> #函数返回值其实是一个迭代器
>>> list(map(func, [1, 2, 3, 4, 5]))
[1, 4, 9, 16, 25] #手动将其转换成列表
さらに2つの栗を与えます:
>>> list(map(int, "123456789"))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> set(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
{
'5', '8', '3', '7', '6', '4', '1', '2', '9'}
filter()フィルター関数
使用法:filter()は関数関数とシーケンスを受け取ります。この関数の関数は、シーケンス内の各要素を判断してTrueまたはFalseを返すことです。Filter()は、判断結果に従って非修飾要素を自動的に除外し、を返します。適格な要素の新しいシーケンスの反復子。
栗を与える:
コード:
def func(x):
/*保留整数序列中的偶数部分*/
if x % 2 == 0:
return True
else:
return False
効果は次のとおりです。
>>> list(filter(func, [x for x in range(1, 11)]))
[2, 4, 6, 8, 10]
別の栗を与える
>>> names = ["Joker", "BatMan", "SuperMan", "me"]
>>> list(filter(lambda x:x.islower(), names))
['me'] #卑微的我
reduce()関数
機能:パラメータシーケンスの要素を蓄積します
使用方法:シーケンス内のすべてのデータに対して次の操作を実行します。reduceに渡された関数関数(2つのパラメーターを使用)を使用して、セットの1番目と2番目の要素を操作すると、結果が3番目の要素と比較されます。関数関数を使用してデータを計算し、最終的に結果を取得します。
注:1。上記の2つの関数とは異なり、reduce()はイテレーターオブジェクトではなく値を返します。
2. Python3では、reduce()関数がグローバル名前名から削除され、functoolsモジュールに配置されました。これを使用する場合は、functoolsモジュールを導入してreduce()関数を呼び出す必要があります。
栗を与える:
>>> from functools import reduce
>>> add = lambda x, y:x + y
>>> reduce(add, range(1, 101))
5050
sort()カスタムソート関数
役割:すべての反復可能なオブジェクトを並べ替えます
並べ替えと並べ替えの違い:
-
sortはリストに適用されるメソッドであり、sortedはすべての反復可能なオブジェクトをソートできます。
-
listのsortメソッドは既存のリストに対する操作を返しますが、組み込み関数のsortedメソッドは、元のリストに基づく操作ではなく、新しいリストを返します。
ソートされた構文:
sorted(iterable, key=None, reverse=False)
パラメータの説明:
- iterable-iterableオブジェクト
- キー-主に要素を比較するために使用されます。パラメーターは1つだけです。特定の関数パラメーターは反復可能オブジェクトから取得され、反復可能オブジェクト内の要素を指定して並べ替えます
- 逆ソートルール、reverse =降順の場合はTrue、reverse =昇順の場合はFalse(デフォルト)
戻り値:並べ替え後の新しいリスト
栗をあげる
タイトル説明:
- 1から100までの10個の整数のリストをランダムに生成し、偶数桁のインデックスを持つ要素を昇順で並べ替え、奇数桁のインデックスを持つ要素を降順で並べ替えます。
import random
ls = random.sample(range(1, 101), 10)
print(ls) //排序前:[43, 71, 40, 4, 74, 58, 83, 55, 25, 54]
ls[::2] = sorted(ls[::2])
ls[1::2] = sorted(ls[1::2], reverse = True)
print(ls) //排序后:[25, 71, 40, 58, 43, 55, 74, 54, 83, 4]
別の栗を与える
タイトル説明:
- -100から100の範囲の10個の整数のリストをランダムに生成し、最小から最大の絶対値でソートします
import random
ls = random.sample(range(-100, 101), 10)
print(ls) //排序前:[60, -87, -73, -91, 21, -66, -95, 67, -1, 79]
ls = sorted(ls, key = abs)
print(ls) //排序后:[-1, 21, 60, -66, 67, -73, 79, -87, -91, -95]
最後に、栗はとてもおいしいです!本当に香りがよい~~