1. 程式人生 > >Python基礎【高階函式】

Python基礎【高階函式】

高階函式

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])))

輸出結果:

Python基礎【高階函式】


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])))

輸出結果:

Python基礎【高階函式】


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]))

輸出結果:

Python基礎【高階函式】


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)) ## 取引數的相反數進行排序

輸出結果:

Python基礎【高階函式】