python-高次関数-map reduce filter sorted


map
def double(a):
    return 2 * a
	
def upper(str):
    return str.upper()
	
print map(double, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print map(upper, 'martin')

output:
[2, 4, 6, 8, 10, 12, 14, 16, 18]
['M', 'A', 'R', 'T', 'I', 'N']

まとめ:
  • mapの最初のパラメータは関数(1つのパラメータ)であり、2番目のパラメータはlist
  • である.
  • map機能はlistの各要素に関数を作用させ、新しいlist
  • を返す.
    reduce
    def add(a, b):
        return a + b
    	
    def mul(a, b):
        return a * b
    	
    print reduce(add, [1, 3 ,5 ,7, 9])
    print reduce(mul, [1, 3 ,5 ,7, 9])

    output:
    25
    945

    まとめ:
  • reduct最初のパラメータは関数(2つのパラメータ)であり、2番目のパラメータはlist
  • である.
  • reduct機能は関数を用いて累積計算
  • を行う.
    filter
    def odd(n):
        return n % 2 == 1
    
    def prime(n):
        if n == 1:
            return False
        for i in range(2, n):
            if n % i == 0:
                return False
        return True
        
    print filter(odd, range(1, 21))
    print filter(prime, range(1, 21))

    output:
    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    [2, 3, 5, 7, 11, 13, 17, 19]

    まとめ:
  • filter最初のパラメータは関数(1パラメータ、ブール値を返す)であり、2番目のパラメータはlist
  • である.
  • fliter機能関数に従って結果フィルタ要素
  • を返す
    sorted
    def asc(x, y):
        if x > y:
            return 1
        if x < y:
            return -1
        return 0
        
    def desc(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0
    
    print sorted([8, 5, 58, 18, 15])
    print sorted([8, 5, 58, 18, 15], asc)
    print sorted([8, 5, 58, 18, 15], desc)

    output:
    [5, 8, 15, 18, 58]
    [5, 8, 15, 18, 58]
    [58, 18, 15, 8, 5]

    まとめ:
  • sorted 1番目のパラメータはlist、2番目のパラメータは関数(2つのパラメータ、比較結果を返し、通常は1が大きい、-1が小さい、0が等しい)
  • を規定する.
  • sorted機能関数比較結果に基づいてソート
  • 注意:2番目のパラメータomitの場合は、>または