map()的使用
map()的使用方法形如map(f(x),Itera).對,它有兩個參數,第一個參數為某個函數,第二個為可迭代對象。如果不懂什么是函數,不懂什么是可迭代對象沒關系,記住下面的例子就可以了:
1 >>> def g(x): 2 return 3 * x 3 4 >>> l=map(g,[1,3,4,5,7,10]) 5 >>> list(l) 6 [3, 9, 12, 15, 21, 30]
定義的g(x)就是作為map()第一個參數,它的作用是取參數X的三倍。
[1,3,4,5,7,10]列表作為g(x)的第二個參數,它是一個列表。沒錯,列表是一個可迭代對象,當然可迭代對象不僅僅有列表,其他的可以慢慢學習。調用map函數后,g(x)將會作用到列表的每個元素,我們來看看作用后的效果:
>>> list(l)
[3, 9, 12, 15, 21, 30]
是的,l的每個元素為原來的三倍。
函數應該懂了吧。
可迭代對象應該懂了吧。
重點是,map()函數會用了吧。
恭喜!
reduce()的使用
reduce()的使用方法形如reduce(f(x),Itera).對,它的形式和map()函數一樣。不過參數f(x)必須有兩個參數。reduce()函數作用是:把結果繼續和序列的下一個元素做累積計算。廢話不多說,請看實例:
>>> from functools import reduce >>> def add(x,y): #定義一個相加函數 return x+y >>> reduce(add,[1,2,3,4,6]) 16
add(x,y)是我們定義的一個函數,將add函數和[1,2,3,4,6]列表傳入reduce函數,就相當於1+2+3+4+6 =16。即把結果繼續和序列的下一個元素做累加。
我們再來舉一實例來說明:
>>> def fun(x,y):#定義一個函數 return 10*x+y >>> reduce(fun,[2,5,6]) 256
定義的函數fun作用是將x,y轉化成一個整數xy。於是作用於reduce就會將列表[x1,x2,x3,x4,x5]轉化成整數x1x2x3x4x5。
這就是reduce()的作用。
以上就是內建函數map()和reduce()的簡單用法。