<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python3中的map()、reduce()、filter() 這3個一般是用於對序列進行操作的內建函數,它們經常需要與 匿名函數 lambda 聯合起來使用,我們今天就來學習下。
map() 可以用於在函數中對指定序列做對映,返回值是一個迭代器,其使用語法如下:
map(function, *iterables)
上面的第一個引數 function 指一個函數,第二個引數 iterable 指一個或多個可迭代物件,在執行過程中,會對可迭代物件中的每一個元素呼叫 function 函數做計算,最後得到一個新的迭代器物件,而這個新的迭代器物件,會包含有每次呼叫 function 函數的返回值。
只傳入一個可迭代物件
"""計算列表中每個元素的三次方""" def demo_map(x): return x ** 3 nums = [1, 2, 3, 4, 5] print(list(map(demo_map, nums))) # 輸出:[1, 8, 27, 64, 125] # 使用匿名函數 print(list(map(lambda x: x ** 3, nums))) # 輸出:[1, 8, 27, 64, 125]
傳入多個可迭代物件
"""計算3個列表中對應下標元素的和""" def demo_map(x, y, z): return x + y + z nums1 = [1, 2, 3, 4, 5] nums2 = [11, 22, 33, 44, 55] nums3 = [100, 200, 300, 400, 500] print(list(map(demo_map, nums1, nums2, nums3))) # 輸出:[112, 224, 336, 448, 560] # 使用匿名函數 print(list(map(lambda x, y, z: x + y + z, nums1, nums2, nums3))) # 輸出:[112, 224, 336, 448, 560]
filter() 可以用於過濾序列,過濾掉不符合條件的元素,返回值也是一個迭代器,其使用語法如下:
filter(function or None, iterable)
和 map() 函數類似,上面的第一個引數 function 指一個函數,第二個引數 iterable 指一個可迭代物件,執行後會得到一個包含每次呼叫 function 函數返回值的迭代器。
"""找出從 -5 到 5 中能被 4 整除的所有整數""" def demo_filter(x): return x % 4 == 0 nums = range(-5, 6) print(list(nums)) # 輸出:[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] # 傳入None,只返回true的值(0是False,所以被過濾掉了) print(list(filter(None, nums))) # 輸入:[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5] # 傳入正常函數,過濾出 nums 中能被 4 整除的整數 print(list(filter(demo_filter, nums))) # 輸出:[-4, 0, 4] # 使用匿名函數 print(list(filter(lambda x: x % 4 == 0, nums))) # 輸出:[-4, 0, 4]
針對 map() 和 filter() 函數, 這裡有 2 點需要注意:
reduce() 可以用於對引數序列中的元素進行累積,返回的是一個值。
在 Python3 中,reduce() 已被從全域性名稱空間裡移除了,如果想要使用它,那麼需通過引入 functools 模組來呼叫 reduce() 函數,其使用語法如下:
from functools import reduce reduce(function, sequence[, initial])
上面的第一個引數 function 指一個函數,並且該函數必須含有2個引數,第二個引數 sequence 指一個序列,第三個引數 initial 指初始值,預設是None。
例如存在函數:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]),它就相當於 ((((1+2)+3)+4)+5)。
"""計算 1-100 所有整數之和""" ''' 學習中遇到問題沒人解答?小編建立了一個Python學習交流群:711312441 尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教學和PDF電子書! ''' from functools import reduce def demo_reduce(x, y): return x + y nums = range(1, 101) print(reduce(demo_reduce, nums)) # 輸出:5050 # 使用匿名函數 print(reduce(lambda x, y: x + y, nums)) # 輸出:5050 # 設定初始值為 1000 print(reduce(lambda x, y: x + y, nums, 1000)) # 輸出:6050
上面的 map()、reduce()、filter() 都是屬於Python3中的高階函數,它們最大的好處在於可以讓程式碼更加簡潔,當然,如果不使用它們,我們也可以通過其他方式來實現。
到此這篇關於Python3中map()、reduce()、filter()的用法的文章就介紹到這了,更多相關Python3 map()、reduce()、filter()內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45