一文帶您理解Python的map/filter/reduce
map、reduce 和 filter 函數(shù)在Python中是高效優(yōu)雅的函數(shù),可以以簡潔而高效的方式轉(zhuǎn)換和操作數(shù)據(jù)。map函數(shù)允許您對可迭代對象中的每個元素應(yīng)用同一個函數(shù),從而生成一個新的可迭代對象。filter函數(shù)則允許您根據(jù)條件過濾可迭代對象中的元素,僅保留滿足條件的元素。而reduce函數(shù)則用于將可迭代對象中的元素逐個結(jié)合起來,生成單個值。通過理解和靈活運用這些函數(shù),您能夠更加輕松地處理數(shù)據(jù),提高編程效率和代碼清晰度。
map 函數(shù):多功能的變形器

map函數(shù)接收兩個參數(shù):
- 計算函數(shù)
 - 可迭代對象
 
其目的是對可迭代對象(如列表)中的每個元素應(yīng)用某種轉(zhuǎn)換。映射函數(shù)將該函數(shù)應(yīng)用于可迭代對象中的每個元素,并返回一個新的可迭代對象。
mylist = [1, 2, 3, 4]
def add100(n):
  return n + 100
newlist = list(map(add100, mylist))
print(newlist)上面是一個簡單的函數(shù) add100(n),它接收一個數(shù)字 n,并簡單地返回 n+100。add100 函數(shù)應(yīng)用于 mylist 中的每一個元素:
- add100(1) 返回 101
 - add100(2) 返回 102
 - add100(3) 返回 103
 - add100(4) 返回 104
 
因此,返回 [101, 102, 103, 104]。
filter函數(shù):選擇器/過濾器

filter函數(shù)接收兩個參數(shù):
- 判斷函數(shù)
 - 可迭代對象
 
其目的是決定哪些可迭代對象中的元素保留,哪些丟棄。過濾函數(shù)不會對元素進行任何轉(zhuǎn)換。
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
def larger5(n):
  return n > 5
newlist = list(filter(larger5, mylist))
print(newlist)上面代碼是一個函數(shù) larger5(n),它接收一個數(shù)字 n,如果 n 大于5則返回True,否則返回False。
larger5 函數(shù)應(yīng)用于 mylist 中的每一個元素:
- larger5(1) -- larger5(5)返回 False
 - larger5(6) -- larger5(8) 返回 True
 
因此,1、2、3、4、5 返回 False 被丟棄,而只有 6、7、8 返回 True 被保留,最終返回 [6, 7, 8]。
reduce函數(shù):聚合器

reduce 函數(shù)接收兩個參數(shù):
- 計算函數(shù)
 - 可迭代對象
 
這個函數(shù)的目的是以某種方式將所有元素壓縮成一個值。最簡單的例子是加法。
mylist = [1, 2, 3, 4, 5]
from functools import reduce
def add(a, b):
  return a + b
result = reduce(add, mylist)
print(result)上面代碼是一個簡單的函數(shù) add(a, b),它簡單地返回 a+b。
這個函數(shù)被應(yīng)用于每一對元素(累積地):
- add(1, 2) 返回 3
 - add(3, 3) 返回 6
 - add(6, 4) 返回 10
 - add(10, 5) 返回 15
 
因此,最終得到 15。















 
 
 


















 
 
 
 