溫馨提示×

溫馨提示×

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

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

python中map和reduce有什么區(qū)別

發(fā)布時間:2020-07-28 09:42:21 來源:億速云 閱讀:151 作者:清晨 欄目:編程語言

不懂python中map和reduce有什么區(qū)別?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

python中map和reduce有什么區(qū)別

從參數方面來講:

map()函數:

map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參數。

reduce()函數:

reduce() 第一個參數是函數,第二個是 序列(列表或元組)。但是,其函數必須接收兩個參數。

從對傳進去的數值作用來講:

map()是將傳入的函數依次作用到序列的每個元素,每個元素都是獨自被函數“作用”一次;(請看下面的栗子)

reduce()是將傳人的函數作用在序列的第一個元素得到結果后,把這個結果繼續(xù)與下一個元素作用(累積計算),

最終結果是所有的元素相互作用的結果。(請看下面的栗子)

舉個栗子:

map()函數:

# 傳入一個參數
def one_p(x):
    return x * x
print 'map1.1:', map(one_p, range(1, 5)) 
#結果:map1.1: [1, 4, 9, 16]
print 'map1.2:', map(one_p, [1, 2, 3, 4, 5, 6])
#結果:map1.2: [1, 4, 9, 16, 25, 36]
 
# 傳入多個參數
a = [1, 2, 3, 4, 5]
b = [1, 1, 6, 2, 3]
c = [1, 2, 3, 4, 5]
s = map(lambda (x, y, z): x * y * z, zip(a, b, c))
print 'map2:', s
#結果:map2: [1, 4, 54, 32, 75]

reduce函數

r1 = reduce(lambda x, y: x * y, (2, 2, 6, 2))  #運算過程:(((2*2)*6)*2)
r2 = reduce(lambda x, y: x * y, (2, 2, 6), 2)  #<span style="font-family: Arial, Helvetica, sans-serif;">
運算過程:(((2*2)*6)*2)</span>
 
print 'r1:', r1  # 結果:r1: 48
print 'r2:', r2  # 結果:r2: 48

感謝你能夠認真閱讀完這篇文章,希望小編分享python中map和reduce有什么區(qū)別內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節(jié)

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

ce %d
AI