欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中reduce函數(shù)詳解

 更新時(shí)間:2022年06月12日 16:51:15   作者:走召大爺  
本文主要介紹了Python中reduce函數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

reduce函數(shù)原本在python2中也是個(gè)內(nèi)置函數(shù),不過(guò)在python3中被移到functools模塊中。

reduce函數(shù)先從列表(或序列)中取出2個(gè)元素執(zhí)行指定函數(shù),并將輸出結(jié)果與第3個(gè)元素傳入函數(shù),輸出結(jié)果再與第4個(gè)元素傳入函數(shù),…,以此類推,直到列表每個(gè)元素都取完。

1 reduce用法

對(duì)列表元素求和,如果不用reduce,我們一般常用的方法是for循環(huán):

def sum_func(arr):
? ? if len(arr) <= 0:
? ? ? ? return 0
? ? else:
? ? ? ? out = arr[0]
? ? ? ? for v in arr[1:]:
? ? ? ? ? ? out += v
? ? ? ? return out

a = [1, 2, 3, 4, 5]
print(sum_func(a))

可以看到,代碼量比較多,不夠優(yōu)雅。如果使用reduce,那么代碼將非常簡(jiǎn)潔:

from functools import reduce

a = [1, 2, 3, 4, 5]

def add(x, y): return x + y

print(reduce(add, a))

輸出結(jié)果為:

15

2 reduce與for循環(huán)性能對(duì)比

與內(nèi)置函數(shù)map和filter不一樣的是,在性能方面,reduce相比較for循環(huán)來(lái)說(shuō)沒(méi)有優(yōu)勢(shì),甚至在實(shí)際測(cè)試中

reduce比f(wàn)or循環(huán)更慢。

from functools import reduce
import time

def test_for(arr):
? ? if len(arr) <= 0:
? ? ? ? return 0
? ? out = arr[0]
? ? for i in arr[1:]:
? ? ? ? out += i
? ? return out


def test_reduce(arr):
? ? out = reduce(lambda x, y: x + y, arr)
? ? return out

a = [i for i in range(100000)]
t1 = time.perf_counter()
test_for(a)
t2 = time.perf_counter()
test_reduce(a)
t3 = time.perf_counter()
print('for循環(huán)耗時(shí):', (t2 - t1))
print('reduce耗時(shí):', (t3 - t2))

輸出結(jié)果如下:

for循環(huán)耗時(shí): 0.009323899999999996
reduce耗時(shí): 0.018477400000000005

因此,如果對(duì)性能要求苛刻,建議不用reduce, 如果希望代碼更優(yōu)雅而不在意耗時(shí),可以用reduce。

到此這篇關(guān)于Python中reduce函數(shù)詳解的文章就介紹到這了,更多相關(guān)Python reduce函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法

    使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法

    這篇文章主要介紹了使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解python 一維、二維列表的初始化問(wèn)題

    詳解python 一維、二維列表的初始化問(wèn)題

    這篇文章主要介紹了python 一維、二維列表的初始化,本文通過(guò)兩種方式給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-06-06
  • 在jupyter notebook中調(diào)用.ipynb文件方式

    在jupyter notebook中調(diào)用.ipynb文件方式

    這篇文章主要介紹了在jupyter notebook中調(diào)用.ipynb文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 利用pyinstaller將py文件打包為exe的方法

    利用pyinstaller將py文件打包為exe的方法

    本篇文章主要介紹了利用pyinstaller將py文件打包為exe的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python基礎(chǔ)教程之while循環(huán)用法講解

    Python基礎(chǔ)教程之while循環(huán)用法講解

    Python中除了for循環(huán)之外還有一個(gè)while循環(huán),下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之while循環(huán)用法講解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Python讀入mnist二進(jìn)制圖像文件并顯示實(shí)例

    Python讀入mnist二進(jìn)制圖像文件并顯示實(shí)例

    這篇文章主要介紹了Python讀入mnist二進(jìn)制圖像文件并顯示實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Tensorflow訓(xùn)練MNIST手寫數(shù)字識(shí)別模型

    Tensorflow訓(xùn)練MNIST手寫數(shù)字識(shí)別模型

    這篇文章主要為大家詳細(xì)介紹了Tensorflow訓(xùn)練MNIST手寫數(shù)字識(shí)別模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Python Pygame實(shí)戰(zhàn)之塔防游戲的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之塔防游戲的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用Python中的Pygame模塊制作簡(jiǎn)單的塔防小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-03-03
  • 利用Python刪除電腦中重復(fù)文件的方法

    利用Python刪除電腦中重復(fù)文件的方法

    這篇文章主要介紹了利用Python刪除電腦中的重復(fù)文件,下文我們來(lái)分享解決電腦中文件重復(fù)的情況的一個(gè)方法,需要的朋友可以參考一下,希望對(duì)大家日常問(wèn)題解決有所幫助
    2022-05-05
  • 基于python計(jì)算滾動(dòng)方差(標(biāo)準(zhǔn)差)talib和pd.rolling函數(shù)差異詳解

    基于python計(jì)算滾動(dòng)方差(標(biāo)準(zhǔn)差)talib和pd.rolling函數(shù)差異詳解

    這篇文章主要介紹了基于python計(jì)算滾動(dòng)方差(標(biāo)準(zhǔn)差)talib和pd.rolling函數(shù)差異詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06

最新評(píng)論