詳解python內建常用高階函式(列出了5個常用的)
高階函式是在Python中一個非常有用的功能函式,所謂高階函式就是一個函式可以用來接收另一個函式作為引數,這樣的函式叫做高階函式。
python內建常用高階函式:
一、函數語言程式設計
•函式本身可以賦值給變數,賦值後變數為函式;
•允許將函式本身作為引數傳入另一個函式;
•允許返回一個函式。
1、map()函式
是 Python 內建的高階函式,它接收一個函式 f 和一個 list,
並通過把函式 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回
def add(x): return x+x print(map(add,[1,2,3])) # Out:<map object at 0x00000239E833DE48> print(list(map(add,3]))) # Out:[2,4,6]
2、reduce()函式
reduce()函式也是Python內建的一個高階函式。
reduce()函式接收的引數和 map()類似,一個函式 f,一個list,但行為和 map()不同,reduce()傳入的函式f必須接收兩個引數,
reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。
在 Python3 中,reduce() 函式已經被從全域性名字空間裡移除了,它現在被放置在 functools 模組裡,如果想要使用它,
則需要通過引入 functools 模組來呼叫 reduce() 函式:
from functools import reduce def prod(x,y): return x*y print(reduce(prod,[2,5,7,12])) # Out:3360 # 2*4*5*7*12 # reduce()還可以接收第3個可選引數,作為計算的初始值。如果把初始值設為100 print(reduce(prod,12],100)) # Out:336000 # 2*4*5*7*12*100
3、filter()函式
是 Python 內建的另一個有用的高階函式,filter()函式接收一個函式 f 和一個list,
這個函式f的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,
返回由符合條件元素組成的新list。
import math def is_sqr(x): return math.sqrt(x) == int(math.sqrt(x)) print(list(filter(is_sqr,range(1,101)))) # Out:[1,9,16,25,36,49,64,81,100]
4、sorted() 函式
對所有可迭代的物件進行排序操作。
sort 與 sorted 區別:
sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函式 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
sorted(iterable,key=None,reverse=False)
iterable -- 可迭代物件。
key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。
reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(預設)。
返回重新排序的列表
print(sorted([5,3,1,4])) # Out:[1,5] print(sorted({1:'D',2:'B',3:'B',4:'E',5: 'A'})) # Out:[1,5]
利用key進行倒序排序
example_list = [5,6,4] result_list = sorted(example_list,key=lambda x: x*-1) print(result_list)
要進行反向排序,也可以通過傳入第三個引數 reverse=True:
example_list = [5,4] print(sorted(example_list,reverse=True)) # Out:[7,0]
5、Python的函式不但可以返回int、str、list、dict等資料型別,還可以返回函式!
請注意區分返回函式和返回值:
def my_abs(): return abs # 返回函式,返回函式可以把一些計算延遲 def my_abs2(x): return abs(x) # 返回函式呼叫的結果,返回值是一個數值
def calc_prod(lst): def lazy_prod(): prod = 1 for i in lst: prod = prod*i return prod return lazy_prod f = calc_prod([1,4]) print(f()) # Out:24
5.1、為什麼定義lazy_prod()函式和返回函式cal_prod()?
python支援返回函式的基本語法
def f(): print('call f()...') # 定義函式g: def g(): print('call g()...') # 返回函式g: return g
只返回函式的作用:
返回函式可以把一些計算延遲執行。例如,如果定義一個普通的求和函式:
def calc_sum(lst): return sum(lst) print(calc_sum([1,4])) # Out:10 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum f = calc_sum([1,4]) print(f) # 程式碼並沒有對函式進行執行計算出結果,而是返回函式,所以打印出來的是型別 #Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18> print(f()) # 對返回的函式進行呼叫時,才計算出結果 # Out:10
總結
以上所述是小編給大家介紹的python內建常用高階函式(列出了5個常用的),希望對大家有所幫助,也非常感謝大家對我們網站的支援!