python的映射_Python学习:映射函数(map)和函数式编程工具(filter和reduce)
在序列中映射函數map
map函數會對一個序列對象中的每一個元素應用被傳入的函數,并且返回一個包含了所有函數調用結果的一個列表。
例1:def?sum(x):
return?x?+?10
L1?=?[1,2,3,4,5,6,7]
L?=?map(sum,?L1)
#結果為[11,?12,?13,?14,?15,?16,?17]
map還有更高級的使用方法,例如提供了序列作為參數,它能夠并行返回分別以每個序列中的元素作為函數對應參數得到的結果的列表。如例2所示。
例2:def?sum(x,?y):
return?x?+?y
L1?=?[1,2,3,4,5,6]
L2?=?[10,11,12,13,14,15]
print?map(sum,?L1,?L2)
#結果為[11,?13,?15,?17,?19,?21]
注意:map調用與列表解析很相似,但是map對每一個元素都應用了函數調用而不是任意的表達式。因為這點閑置,從某種意義上來說,它成為了一個不太通用的工具,盡管如此,在某些情況下,目前map比列表解析運行起來更快。它也比for循環更快。
函數式編程工具(filter和reduce)
map函數是Python用來進行函數式編程的這類工具中最簡單的內置函數代表:函數式編程的意思就是對應序列應用一些函數的工具。例如,基于某一側式函數過濾出一些元素(filter),以及對每對元素都應用函數并運行到最后結果(reduce)。由于range和filter都返回可迭代對象,在Python3.0中,它們需要list調用來顯示其所有結果。
序列中的元素若其返回值為真的話,將會被鍵入到結果的列表中。就像map,這個函數能夠用for 循環來等效,但是它是內置的,運行起來比較快。L?=?range(-10,10)
print?filter(lambda?x:x>4,?L)
#結果為[5,?6,?7,?8,?9]
序列中的元素若其返回值為真的話,將會被鍵入到結果的列表中。就像map,這個函數能夠用for 循環來等效,但是它是內置的,運行起來比較快。res?=?[]
for?x?in?range(-10,10):
if?x?>5:
res.append(x)
print(res)
#結果為[5,?6,?7,?8,?9]
reduce在Python2.6中只是一個簡單的內置函數,但是在Python3.0中則位于functools模塊中,要更復雜一些。>>>reduce((lambda?x,y:?x+y),?[1,2,3,4,5])
15
>>>reduce((lambda?x,y:?x*y),?[1,2,3,4,5])
120
總結
以上是生活随笔為你收集整理的python的映射_Python学习:映射函数(map)和函数式编程工具(filter和reduce)的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: python与或非位运算_python位
- 下一篇: 卷积神经网络精确率不增反降_深度学习