1. 程式人生 > >Python3入門(五)——函數式編程

Python3入門(五)——函數式編程

rabl rom pytho 介紹 計算 並且 span 但是 pan

一、高階函數

  1.可以通過變量指向函數,達到類似別名的效果:

>>> f = abs
>>> f(-10)
10

  2.函數的參數可以是函數,也就是函數可以作為一個入參

def add(x, y, f):
    return f(x) + f(y)

  以下介紹幾個高階函數

  map、reduce

    這兩個函數就不贅述了。和scala的功能類似,不過用法不一樣,它接收兩個參數,第一個是函數f,第二個是Iterable。並將計算結果作為新的Iterator返回,惰性的Iterator通過list便可以計算出結果了:

def f(x):
    return x + 1


r = map(f, [1, 2, 3, 4, 5])
print(list(r))

    reduce入參類似map,但是它的f是接收兩個參數,並且需要導包。並將結果作為下一次的輸入,表示起來就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce


def f(x, y):
    return x + y


r = reduce(f, [1, 2, 3, 4, 5])
# 註意這裏不需要list包裝了,因為返回的不是Iterator
print(r)

    filter

  和scala的filter也是類似了,返回Ture的留下,其它過濾掉。其他的入參和返回值與map相同

def f(x):
    return x % 2 == 0


r = filter(f, [1, 2, 3, 4, 5])
print(list(r))

Python3入門(五)——函數式編程