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

Python基礎【高階函數】

sort python UNC 一個 type fff 轉換 每次 函數

高階函數

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

輸出結果:

技術分享圖片

Python基礎【高階函數】