python中如果將乙個函式名傳送給另乙個函式作為形參,那麼就成這個函式為高階函式簡單例子:
f = abs # 這就表示python中函式名是可以傳送給變數的
print(f(-9))
def add(a,b,f): return f(a)+f(b) print(add(1,2,abs)) # 如果將函式名傳入為另乙個函式引數,這樣的叫做高階函式
def fuc(x):
return x*x r = map(fuc,[1,2,3]) print(list(r))
為什麼需要map這樣的函式了? 因為map函式第乙個引數是作用的函式,我們可以通過這個函式清楚的知道這個函式具體的作用是什麼,起到了見名知意的作用。
>>> map(str,[1,2,3,4,5]) >>> list(map(str,[1,2,3,4,5])) ['1', '2', '3', '4', '5']
from functools import reduce
def add(a,b): return a+b print(reduce(add,[1,2,3,4])) # 使用redunce這裡相當於是sum def add1(a,b): return 10 * a + b print(reduce(add1,[1,2,3,4])) # 這個例子相當於是進行迭代操作,一次一次進行迭代
>>> from functools import reduce
>>> def fn(x, y):
return x * 10 + y
...>>> def char2num(s):...
digits = ... return digits[s] ... >>> reduce(fn, map(char2num, '13579')) 13579
def is_odd(num):
#if(num%2==1): # return num return num % 2 == 1 # 這句話的含義就是先進行判斷然後進行合適數字的輸出 print(list(filter(is_odd, [1, 2, 3, 4, 5, 6]))) # filter和map類似的,輸出的也是乙個惰性序列,需要通過list強制進行轉換
* 注意到filter()函式返回的是乙個iterator,也就是乙個惰性序列,所以要強迫filter()完成計算結果,需要用list()函式獲得所有結果並返回list。*
print(sorted([1, 2, 49, -11])) # 預設是從小到大進行排序 print(sorted([1, 2, 49, -11], reverse=true)) # 通過reverse屬性,表示我們使用反向排序,也就是從大到小進行排序 print(sorted([1, 2, 49, -11], key=abs)www.yigouyule2.cn) # 按照絕對值從小到大進行排序 print(sorted(['abs',www.120xh.cn 'ab', 'zo'])www.taohuayuan178.com) # 這個sorted對字串進行排序的時候是根據首字元的ascii進行排序的 print(sorted(['abs', 'ab',www.dongfan178.com 'zo'], key=str.lower)) # 這個表示按照字串首字母進行排序,但是這裡的話我們忽略大小寫
乙個函式的返回值不僅僅是乙個數,也還可以是乙個函式,這樣的高階函式稱為返回函式
def laze_sum(*args):
def sum_up(): # 這個是通過可變引數進行求和運算的 sumnum = 0 for n in args: sumnum = sumnum + n return sumnum return sum_up f1 = laze_sum(1, 2, 3) f2 = laze_sum(1, 2, 3) print(f1) #www.huachengj1980.com/ .sum_up at 0x0000023c5ded3d90>輸出這樣乙個數 if f1 == f2: print('true') else: print('no')
print(list(map(lambda x: x*x, [1, 2, 3, 4, 5]))) print(list(map(lambda x: x*x*x, [1, 2, 3, 4, 5]))) # 使用lambda是不會發生重名的錯誤的
Python函式式程式設計(二) 常見高階函式
乙個函式的引數中有函式作為引數,這個函式就為高階函式。下面學習幾個常見高階函式。一 map 傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回 舉例 有乙個函式f x x2,要把這個函式作用在乙個list 1,2,3,4,5,6,7,8,9 上 def f x return x...
Python函式式程式設計(二) 常見高階函式
乙個函式的引數中有函式作為引數,這個函式就為高階函式。下面學習幾個常見高階函式。一 map 傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回 舉例 有乙個函式f x x2,要把這個函式作用在乙個list 1,2,3,4,5,6,7,8,9 上 def f x return x...
12 1 1 使用高階函式
12.1.1 使用高階函式 在 f 中,用於處理序列的函式在 seq 模組中,我們將解釋乙個非常普通的函式,seq.unfold。你可以看到,它與 fole 函式相對,它取乙個集合,並把它 折 成單一值。unfold 取單一值,把它 展開 為乙個序列。下面的 片斷展示了如何生成乙個序列,包含把 10...