91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中reduce函數怎么使用

發布時間:2022-06-13 09:24:06 來源:億速云 閱讀:163 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Python中reduce函數怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python中reduce函數怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

reduce函數原本在python2中也是個內置函數,不過在python3中被移到functools模塊中。

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

1 reduce用法

對列表元素求和,如果不用reduce,我們一般常用的方法是for循環:

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))

可以看到,代碼量比較多,不夠優雅。如果使用reduce,那么代碼將非常簡潔:

from functools import reduce

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

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

print(reduce(add, a))

輸出結果為:

15

2 reduce與for循環性能對比

與內置函數map和filter不一樣的是,在性能方面,reduce相比較for循環來說沒有優勢,甚至在實際測試中

reduce比for循環更慢。

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循環耗時:', (t2 - t1))
print('reduce耗時:', (t3 - t2))

輸出結果如下:

for循環耗時: 0.009323899999999996
reduce耗時: 0.018477400000000005

因此,如果對性能要求苛刻,建議不用reduce, 如果希望代碼更優雅而不在意耗時,可以用reduce。

讀到這里,這篇“Python中reduce函數怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永修县| 壶关县| 江都市| 澎湖县| 前郭尔| 海淀区| 岳池县| 盈江县| 永定县| 洪洞县| 黔南| 富宁县| 永修县| 通许县| 兴宁市| 合山市| 临邑县| 张北县| 柳江县| 砀山县| 潜江市| 师宗县| 衡东县| 周宁县| 松江区| 道孚县| 台江县| 科技| 石泉县| 中山市| 青岛市| 额济纳旗| 乌鲁木齐市| SHOW| 海口市| 佛冈县| 木里| 安庆市| 涡阳县| 柳州市| 巢湖市|