首頁技術文章正文

Python培訓:reduce函數(shù)的功能是什么?

更新時間:2022-08-04 來源:黑馬程序員 瀏覽量:

IT培訓班

  reduce函數(shù)會對參數(shù)迭代器中的元素進行積累。

  ruduce函數(shù)的定義如下:

functools.reduce(function, iterable[, initializer])

  在上述定義中,function是一個帶有兩個參數(shù)的函數(shù);第二個參數(shù)iterable是一個迭代器對象;initializer表示固定的初始值。reduce函數(shù)會依次從迭代器對象中取出每個元素,和上一次調用function的結果做為參數(shù)再次調用function函數(shù)。

  在Python3中,reduce函數(shù)被放置在functools模塊中,使用時需要先引入,示例代碼如下:

from functools import reduce
func = lambda x, y:x + y
result = reduce(func, [1, 2, 3, 4, 5])
print(result)

  在上述示例中,首先引入了fucntools模塊,然后定義了一個計算兩個數(shù)的和的匿名函數(shù)。由于在調用reduce函數(shù)時傳入了func和序列,所以程序會把序列的每個元素取出來,和上次調用后的結果作為參數(shù)再次調用func函數(shù),最后將結果返回給result。

  程序的運行結果如下所示:

15

  如果在調用reduce函數(shù)時傳入了initializer參數(shù),那么function函數(shù)會以迭代器中的第一個元素與initializer的和作為參數(shù)進行調用。示例代碼如下:

from functools import reduce
result = reduce(lambda x, y: x+y, [1, 2, 3, 4], 5)
print(result)
# 結果為
15

  此外,iterable參數(shù)還可以傳入字符串類型,示例代碼如下:

from functools import reduce
result = reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd')
print(result)
# 結果為
'ddaabbcc'

  需要注意的是,reduce函數(shù)傳入的function參數(shù)不能為None。

分享到:
在線咨詢 我要報名
和我們在線交談!