Pythonはあなたでしょうこれらの高階関数を使用していますか?

1.マップ()関数

地図()関数を順次配列の各要素に適用される着信機能、および新たなイテレータとして返された結果をマップ、反復処理可能であり、二つの引数、関数を受け付けます。

def f(x):
    return x * x
L = map(f,[1,2,3,4,5])
list(L)
[1,4,9,16,25]

2.減らす()関数

シーケンス[X1、X2、X3、...]に機能を低下させる、機能は、2つのパラメータを受信し、アキュムレータのように計算されるシーケンスの次の要素の結果を減少させるために続けなければなりません。

効果は次のとおりです。

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce
def fn(x, y):
     return x * 10 + y
    reduce(fn, [1, 2, 3, 4, 5])
    12345

マップと連動してint型に変換するためのstrの機能を削減

from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(s):
        return DIGITS[s]
    return reduce(fn, map(char2num, s))

フィルタ()関数は、フィルタの配列に使用されています

フィルタ()は関数とシーケンスを受信します。)(マップが異なる場合、フィルタ()関数が渡され、順次各要素に適用され、戻り値に基づいて要素を維持するか破棄する正誤判定されます。フィルタ()関数の戻りに注目イテレータである、であるので、力フィルタ()に不活性のシーケンスは、計算を完了するために、必要に応じてリスト()関数を取得し、すべての結果のリストを返します。

空の文字列が順番に削除されました:

 def not_empty(s):
        return s and s.strip()
    list(filter(not_empty,['a','','b',None,'  ']))
    结果:['a','b','c']

素数でフィルタを探しています

3から始まる奇数の配列の第一の構成

def _old_iter():
    n=1
    while Ture:
        n = n+2
        yield n

そして、フィルタ機能を定義します。

def _not_divisible(n):
    return lambda x: x % n > 0

最後に、発電機の定義は、連続して次の素数を返します。

def primes():
    yield 2
    it = _odd_iter() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(_not_divisible(n), it) # 构造新序列

1000未満の素数を印刷:

for n in primes():
    if n < 1000:
        print(n)
    else:
        break

3.ソート機能

Pythonの組み込みのソート()関数は、リストを並べ替えることができます

sorted([36, 5, -12, 9, -21])
    [-21, -12, 5, 9, 36]

()関数をソート高階関数である、それはカスタムの並べ替えを実装するために重要な機能を受け取ることができます

sorted([36, 5, -12, 9, -21], key=abs)
    [5, 9, -12, -21, 36]
​
sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']

デフォルトでは、ソート文字列は、ASCII比較の大きさに応じて、「Z」<「A」から、結果Zは小文字のAの前に大文字になります

sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)  忽略大小写排序
['about', 'bob', 'Credit', 'Zoo']

ファンクションキーを変更せずに、ソート順序を逆にするには、3番目のパラメータは=真逆渡すことができます

sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

オリジナルリンク:

https://blog.51cto.com/8922100/2480826

本研究の目的のために温家宝ソースネットワーク、侵害の接触は削除した場合。

公開された38元の記事 ウォンの賞賛1 ビュー2177

おすすめ

転載: blog.csdn.net/wulishinian/article/details/105042161
おすすめ