Python基礎【高階函式】
阿新 • • 發佈:2018-12-14
高階函式
map(fun,seq)
將seq中的元素依次作為引數傳入fun,返回由函式返回值組成的新的列表。
python3:返回一個map物件
python2:返回列表
可以用list將物件轉換為列表進行呼叫程式碼:
def fun(a): return a+1 print(map(fun,[1,2,3,4,5])) print(list(map(fun,[1,2,3,4,5])))
輸出結果:
filter(fun,seq)
函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該函式接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。
python3:返回一個filter物件
python2:返回列表
程式碼:
def fun(a): return True if a%2==1 else False print(filter(fun,[1,2,3,4,5])) print(list(filter(fun,[1,2,3,4,5])))
輸出結果:
reduce(fun,seq)
reduce傳入一個函式一個序列
fun的引數必須是2個
首次將seq中前兩個元素傳入fun中,隨後每次將返回值和下一個元素作為新的引數傳入函式,直到傳入序列中最後一個元素為止,返回一個最後的返回值。
reduce()是python2中的內建函式
python3中需要匯入funtools包。
from funtools import reduce
程式碼:
import functools from functools import reduce def fun(a,b): return a+b print(reduce(fun,[1,2,3,4,5]))
輸出結果:
sorted(seq,key=...,reverse=...)
函式對所有可迭代的物件進行排序操作。
返回一個由seq序列組成的新的序列
利用key可對需要排序的元素進行篩選程式碼:
print(sorted([3,1,2,5,4],reverse=True)) ## 逆序 print(sorted([3,1,2,5,4],key=lambda x:x*-1)) ## 取引數的相反數進行排序
輸出結果: