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

歡迎訪問 生活随笔!

生活随笔

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

python

python高阶函数filter_python 高阶函数之filter

發布時間:2025/3/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python高阶函数filter_python 高阶函数之filter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前文說到python高階函數之map,相信大家對python中的高階函數有所了解,此次繼續分享python中的另一個高階函數filter。

先看一下filter() 函數簽名

>>>?help(filter)

Help?on?class?filter?in?module?builtins:

class?filter(object)

|??filter(function?or?None,?iterable)?-->?filter?object

|

|??Return?an?iterator?yielding?those?items?of?iterable?for?which?function(item)

|??is?true.?If?function?is?None,?return?the?items?that?are?true.

和map()函數類似,filter()也是接收一個函數和一個序列作為參數,和map() 不同的是,filter把傳入的函數依次作用于序列中的每一個元素,并根據其返回值是True 還是 False 來決定是否保留該元素,達到過濾的效果。

下面舉例說明:

從一個list文件列表中篩選出已 .py 結尾的文件,文件列表如下:

files?=?["report.py","log.txt",?"logger.py",

"config.txt",?"main.py"]

首先定義一個函數,其功能是根據傳入的文件判斷

>>>?def?is_python_file(file_name):

...?????if?file_name.endswith(".py"):

...?????????????return?True

...?????else:

...?????????????return?False

...

應用filter函數

>>>?list(filter(is_python_file,?files))

['report.py',?'logger.py',?'main.py']

以上就達到了篩選的功能,很牛吧,不用自己再寫一個 for 循環進行判斷了。

第一個參數傳入 is_python_file 函數對象

第二個參數傳入 序列 files列表

多說一句,有的小伙伴對傳入的參數函數對象(沒加括號)可能有疑惑,如果函數加(),表示函數執行的結果傳入 filter

如果感覺定義一個簡單的函數麻煩,我們可以使用匿名函數lambda

lambda?f:f.endswith(".py")

>>>?list(filter(lambda?f:f.endswith(".py"),?files))

['report.py',?'logger.py',?'main.py']

其實還可以使用列表推導式

>>>?[?f?for?f?in?files?if?f.endswith(".py")?]

['report.py',?'logger.py',?'main.py']

python中其他的高階函數使用方式也是類似的,比如sorted、reduce、reversed。內置常用高階函數就分享到這里啦,更多分享請關注微信公眾號

總結

以上是生活随笔為你收集整理的python高阶函数filter_python 高阶函数之filter的全部內容,希望文章能夠幫你解決所遇到的問題。

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