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

Python??reduce()函數(shù)的用法示例代碼

 更新時(shí)間:2023年05月18日 10:25:37   作者:山茶花開(kāi)時(shí)  
reduce函數(shù)原本在python2中也是個(gè)內(nèi)置函數(shù),不過(guò)在python3中被移到functools模塊中,這篇文章主要介紹了Python reduce()函數(shù)的用法,需要的朋友可以參考下

Python reduce()函數(shù)的用法

reduce()函數(shù)也是Python內(nèi)置的一個(gè)高階函數(shù)。reduce()函數(shù)接收的參數(shù)和 map()類似,一個(gè)函數(shù) f,一個(gè)list,但行為和 map()不同,reduce()傳入的函數(shù) f 必須接收兩個(gè)參數(shù),reduce()對(duì)list的每個(gè)元素反復(fù)調(diào)用函數(shù)f,并返回最終結(jié)果值。

reduce()函數(shù)會(huì)對(duì)參數(shù)序列中的元素進(jìn)行累積

語(yǔ)法結(jié)構(gòu)

reduce(function, iterable[, initializer])

參數(shù)說(shuō)明

  • function: 函數(shù),有兩個(gè)參數(shù)
  • iterable: 可迭代對(duì)象
  • initializer: 初始參數(shù)(可選)

返回值

返回函數(shù)計(jì)算結(jié)果

綜上所述,reduce()函數(shù)將一個(gè)數(shù)據(jù)集合中的所有數(shù)據(jù)進(jìn)行下列操作,先從數(shù)據(jù)集合中取出2個(gè)元素執(zhí)行指定函數(shù)function,并將輸出結(jié)果與第3個(gè)元素傳入function函數(shù),輸出結(jié)果再與第4個(gè)元素傳入function函數(shù)進(jìn)行計(jì)算,以此類推,直到列表每個(gè)元素都取完進(jìn)行累積,最終返回計(jì)算結(jié)果

提示Tips

在python3中,內(nèi)置函數(shù)中已經(jīng)沒(méi)有reduce()函數(shù)了,它現(xiàn)在被放置在functools模塊里,如果想要使用它,則需要通過(guò)引入functools模塊來(lái)調(diào)用reduce()函數(shù)

from functools import reduce

示例1

from functools import reduce
# 兩數(shù)相加
def add(x,y):
    return x + y
# 計(jì)算1 + 2 + 3 + ... + 100的和
sum1 = reduce(add, range(1, 101))  
print(sum1)  # 5050
# 計(jì)算列表和:1+2+3+4+5
# 使用lambda匿名函數(shù)+reduce()函數(shù)
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5])
print(sum2)  # 15
sum3 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 6)
# 21 = 6 + 1 + 2 + 3 + 4 + 5 
print(sum3)  # 21

示例2

from functools import reduce
lst = [1,2,3,4,5]
# 120 = 1 * 2 * 3 * 4 * 5
print(reduce(lambda x,y:x*y,lst))  # 120

示例3

from functools import reduce
str1="abcdefg"
# gfedcba
print(reduce(lambda x,y:y+x, str1))

示例4

from functools import reduce
sentences = ['Hello World!! hello Andy'] 
# 統(tǒng)計(jì)字符串'Hello'出現(xiàn)的次數(shù)
word_count =reduce(lambda a,x:a+x.count("Hello"), sentences, 0)
print(word_count)  # 1

【Python基礎(chǔ)】reduce函數(shù)詳解

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ù)mapfilter不一樣的是,在性能方面,reduce相比較for循環(huán)來(lái)說(shuō)沒(méi)有優(yōu)勢(shì),甚至在實(shí)際測(cè)試中

reducefor循環(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中的線程進(jìn)行網(wǎng)絡(luò)編程的入門教程

    使用Python中的線程進(jìn)行網(wǎng)絡(luò)編程的入門教程

    這篇文章主要介紹了使用Python中的線程進(jìn)行網(wǎng)絡(luò)編程的入門教程,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例

    pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例

    今天小編就為大家分享一篇pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • 如何遠(yuǎn)程使用服務(wù)器上的Jupyter notebook

    如何遠(yuǎn)程使用服務(wù)器上的Jupyter notebook

    這篇文章主要介紹了如何遠(yuǎn)程使用服務(wù)器上的Jupyter notebook,主要是在服務(wù)器端執(zhí)行操作,需要特別注意為了防止遠(yuǎn)程中斷,使用掛起操作,即執(zhí)行nohup jupyter notebook,需要的朋友可以參考下
    2023-02-02
  • Python如何優(yōu)雅刪除字符列表空字符及None元素

    Python如何優(yōu)雅刪除字符列表空字符及None元素

    這篇文章主要介紹了Python如何優(yōu)雅刪除字符列表空字符及None元素,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python中requests庫(kù)安裝與使用詳解

    python中requests庫(kù)安裝與使用詳解

    requests是一個(gè)很實(shí)用的Python HTTP客戶端庫(kù),爬蟲(chóng)和測(cè)試服務(wù)器響應(yīng)數(shù)據(jù)時(shí)經(jīng)常會(huì)用到,下面這篇文章主要給大家介紹了關(guān)于python中requests庫(kù)安裝與使用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 使用python對(duì)excle和json互相轉(zhuǎn)換的示例

    使用python對(duì)excle和json互相轉(zhuǎn)換的示例

    今天小編就為大家分享一篇使用python對(duì)excle和json互相轉(zhuǎn)換的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python中l(wèi)ambda與def用法對(duì)比實(shí)例分析

    python中l(wèi)ambda與def用法對(duì)比實(shí)例分析

    這篇文章主要介紹了python中l(wèi)ambda與def用法對(duì)比,實(shí)例分析了lambda與def的區(qū)別與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別

    基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Numpy中np.expand_dims的用法

    Numpy中np.expand_dims的用法

    np.expand_dims是Numpy庫(kù)中的一個(gè)函數(shù),它的主要作用是在數(shù)組的指定位置增加一個(gè)新的維度,本文就來(lái)介紹一下它的用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Python雙端隊(duì)列實(shí)現(xiàn)回文檢測(cè)

    Python雙端隊(duì)列實(shí)現(xiàn)回文檢測(cè)

    雙端隊(duì)列 Deque 是一種有次序的數(shù)據(jù)集,跟隊(duì)列相似,其兩端可以稱作"首" 和 "尾"端。這篇文章將通過(guò)雙端隊(duì)列實(shí)現(xiàn)回文檢測(cè),感興趣的可以學(xué)習(xí)一下
    2022-01-01

最新評(píng)論