python中filter、map、reduce函數的使用


1.filter

功能:filter主要作用是過濾掉序列中不符合函數條件的元素,當序列中要刪、減元素時,可以使用filter函數。

格式:fliter(function,sequence)

function可以是匿名函數或者自定義函數,它可以對后面的sequence序列的每個元素判定是否符合條件,返回True或者False,從而留下True的元素;sequence可以是列表、元組或者字符串。

注意:迭代器需要進行列表轉換

#匿名函數
import random
allNum = []
for i in range(9):
allNum.append(random.randint(1,20))
print(allNum)

print(list(filter(lambda x:x%3,allNum)))

#輸出:

  #[8, 8, 9, 5, 4, 11, 19, 12, 1]
  #[8, 8, 5, 4, 11, 19, 1]

#自定義函數
import random
def fun(x):
return x%2

allNum = []
for i in range(9):
allNum.append(random.randint(1,20))
print(allNum)

print(list(filter(fun,allNum)))
#輸出:

  #[12, 16, 6, 10, 7, 4, 4, 10, 17]
  #[7, 17]

 
        

 

 

2.map

功能:map主要作用是求一個序列或者多個序列進行函數映射之后的值。

格式:map(function,iterable1,iterable2)

function中參數值可以是一個,也可以是多個;后面的iterable代表function運算中的參數值,有幾個參數值就傳入幾個iterable。

注意:1.迭代器需要進行列表轉換   2.map中如果傳入的序列長度不一,會依據最短的序列計算

#匿名函數
x=[1,2,3,4]
y=[3,4,6,8,8] print(list(map(lambda x,y:(x*y)+2,x,y)))

#輸出:[5, 10, 20, 34]

 

 
         
#自定義函數
x=[1,2,3,4]
y=[3,4,6,8,8]

def fun(x,y):
return(x*y)+2


print(list(map(fun,x,y)))

#輸出:[5, 10, 20, 34]

 

 

3.reduce

功能:reduce是對一個序列進行壓縮運算,得到一個值。

格式:reduce(function,iterable)

function中必須傳入兩個參數,iterable可以是列表或者元組。

注意:reduce使用前需要導包 from functools import reduce,map和filter是內置函數,所以可以直接調用.

 
         
#匿名函數
from functools import reduce
x=[3,4,6,8,8] print(reduce(lambda x,y:(x+y),x))

#輸出:29
#自定義函數
from functools import reduce
x=[3,4,6,8,8] def fun(x,y): return x+y print(reduce(fun,x)) #輸出:29

 

計算原理:

先計算頭兩個元素:f(3,4),結果為7;

再把結果和第三個元素6計算:f(7,6),結果為13;

再把結果和第四個元素8計算:f(13,8),結果為21;

再把結果和第四個元素8計算:f(21,8),結果為29;

計算完畢,返回結果29。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM