這篇文章帶給大家的內容是關於python中5個常用的內建高階函數的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
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,[1, 2, 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, 4, 5, 7, 12])) # Out:3360 # 2*4*5*7*12 # reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100 print(reduce(prod, [2, 4, 5, 7, 12], 100)) # Out:336000 # 2*4*5*7*12*100
3、filter()函數
import math def is_sqr(x): return math.sqrt(x) == int(math.sqrt(x)) print(list(filter(is_sqr, range(1, 101)))) # Out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]4、
print(sorted([5, 2, 3, 1, 4])) # Out:[1, 2, 3, 4, 5] print(sorted({1:'D', 2:'B', 3:'B', 4:'E', 5: 'A'})) # Out:[1, 2, 3, 4, 5]
example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x*-1) print(result_list)要進行反向排序,也可以透過傳入第三個參數reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) # Out:[7, 6, 5, 4, 3, 2, 1, 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, 2, 3, 4]) print(f()) # Out:245.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,2,3,4])) # Out:10 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum f = calc_sum([1, 2, 3, 4]) print(f) # 代码并没有对函数进行执行计算出结果,而是返回函数,所以打印出来的是类型 #Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18> print(f()) # 对返回的函数进行调用时,才计算出结果 # Out:10
以上是python中5個常用的內建高階函數的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!