函式式程式設計就是,把函式本身作為引數傳入另乙個函式,並且允許返回乙個函式。
1.高階函式
1.map
map()
函式接收兩個引數,乙個是函式,乙個是iterable
,map
將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator
返回。
>>> def f(x):
... return x * x
...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
2.reduce
reduce
把乙個函式作用在乙個序列[x1, x2, x3, ...]
上,這個函式必須接收兩個引數,reduce
把結果繼續和序列的下乙個元素做累積計算。
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...>>> reduce(add, [1, 3, 5, 7, 9])
25
3.filter
filter()
把傳入的函式依次作用於每個元素,然後根據返回值是true
還是false
決定保留還是丟棄該元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 結果: [1, 5, 9, 15]
4.sorted
python內建的sorted()
函式就可以對list進行排序:
>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
list自帶的sort()可以排序,但是無返回。
>>> a=[3,2,1]
>>> a.sort()
>>> a
[1, 2, 3]
此外,sorted()
函式也是乙個高階函式,它還可以接收乙個key
函式來實現自定義的排序,例如按絕對值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
字典排序
>>> a=
>>> sorted(a.items(),key=lambda x:x[0])
[('a', 2), ('b', 1), ('c', 3)]
使用場景:
1.不用起函式名字
2.功能簡單
例子:
>>> f = lambda x: x * x
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
函式式程式設計
最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...
函式式程式設計
維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...