日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的映射_Python学习:映射函数(map)和函数式编程工具(filter和reduce)

發布時間:2024/4/11 python 95 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。