いくつかの便利なPython高次関数を共有する

高次関数とは何ですか?

高次関数:関数をパラメーターとして別の関数に渡すか、関数の戻り値が別の関数であり(戻り値が関数自体の場合は再帰的です)、そのうちの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()カスタムソート関数

役割:すべての反復可能なオブジェクトを並べ替えます

並べ替えと並べ替えの違い:

  1. sortはリストに適用されるメソッドであり、sortedはすべての反復可能なオブジェクトをソートできます。

  2. 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]


最後に、栗はとてもおいしいです!本当に香りがよい~~

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45590494/article/details/104364074