map():
map()函式接收兩個引數,乙個是傳入函式,乙個是iterable,map將傳入函式依次作用到序列的每個元素,並把結果作為新的iterator返回。
如:map(f, [x1, x2, x3, x4]) = [f(x1),f(x2),f(x3),f(x4)] -->把f(x)作用在list的每乙個元素並將結果生成乙個新的list
reduce():
如:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) -->將f(x)作用在乙個序列上,並將結果繼續和序列的下乙個元素做累積計算
filter():
filter()用於過濾序列,
如:filter(f, [x1, x2, x3, x4]) -->把篩選函式依次作用於序列的每個元素,然後根據返回值是true/false決定保留/丟棄該元素。
sorted():
sorted()用於排序 (內幕:對於元素 x,y,若x < y,則返回‐1,若x == y,返回0,若x > y,返回1。這樣,排序演算法就不用關心具體的比較過程,而是根據比較結果直接排序。)
sorted(iterable , key=函式 , reverse=true) --> key函式作用於list中的每個元素,根據其返回結果進行排序,第三個引數為反向排序時使用。
例子:l = [('bob', 75), ('
adam
', 92), ('
bart
', 66), ('
lisa
', 88)]
print(sorted(l,key=lambda i:i[0])) #
按名字排序
print(sorted(l,key=lambda i:i[1])) #
按成績排序
閉包 closure:
閉包 closure用於將函式作為結果值返回
返回閉包(某函式)時牢記:該函式並未執行,返回函式中不要引用任何可能會變化的變數。(即包在裡面的函式,不要引用外部函式的任何迴圈變數)
如果一定要引用迴圈變數,則再建立乙個函式,用該函式的引數繫結迴圈變數當前的值
lambda函式:
匿名函式(lambda函式):
(語法)lambda [arg1 [,arg2,.....argn]]:expression
如:lambda x: x * x --> 冒號前是引數,可以有多個,用逗號隔開,冒號右邊的返回值。
易錯:fs = [(lambda n: i + n) for i in range(10)]與 fs = [(lambda n, i=i : i + n) for i in range(10)]
注意:1.使用lambda,lambda內不要包含迴圈;
2.lambda只是為了減少單行函式的定義而存在的;
3.可用for...in...if來完成的,堅決不用lambda。
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
Python學習筆記 函式式程式設計 高階函式
根據廖雪峰python教程整理 高階函式英文叫higher order function 什麼是高階函式?我們以實際 為例子,一步一步深入概念。一 變數可以指向函式 以python 內建的求絕對值的函式 abs 為例,呼叫該函式用以下 abs 10 10 但是,如果只寫abs 呢?abs 可見,ab...
python筆記 匿名函式和函式式程式設計
一 匿名函式 lambda 有些地方需要用到一些簡單的函式,而且用到的次數不太多,這個時候可以把函式改寫成匿名函式,不必專門去定義乙個新的函式。python中,lambda是乙個表示式,並不是乙個語句,而且lambda的主體是只有一行的簡單表示式,並不能擴充套件成乙個多行的 塊。python的一些匿...