Python如何用filter函數(shù)篩選數(shù)據(jù)
一.filter函數(shù)簡介
filter函數(shù)主要用來篩選數(shù)據(jù),過濾掉不符合條件的元素,并返回一個迭代器對象,如果要轉(zhuǎn)換為列表list或者元祖tuple,可以使用內(nèi)置函數(shù)list() 或者內(nèi)置函數(shù)tuple()來轉(zhuǎn)換;
filter函數(shù)接收兩個參數(shù),第一個為函數(shù),第二個為序列,序列的每個元素作為參數(shù)傳遞給函數(shù)進(jìn)行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中,就好比是用篩子,篩選指定的元素;
語法:
filter(function, iterable)
參數(shù):
function ? 函數(shù)名;
iterable ? 序列或者可迭代對象;
返回值:通過function過濾后,將返回True的元素保存在迭代器對象中,最后返回這個迭代器對象(python2.0x版本是直接返回列表list);
二.filter函數(shù)使用
1.filter函數(shù)簡單使用
# !usr/bin/env python# -*- coding:utf-8 _*-'''@Author:何以解憂@Blog(個人博客地址): shuopython.com@WeChat Official Account(微信公眾號):猿說python@Github:www.github.com @File:python_process_Pool.py@Time:2020/1/14 21:25 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!'''def check(i): # 如果是偶數(shù)返回 True 否則返回False return True if i%2 == 0 else False if __name__ == '__main__': list1 =[1,2,3,4,5,6] result = filter(check,list1) print(result) print(type(result)) # 將返回的迭代器轉(zhuǎn)為列表list或者元組 print(list(result)) print(type(list(result)))
輸出結(jié)果:
<filter object at 0x0000015127BA7EB8><class ’filter’>[2, 4, 6]<class ’list’>
2.filter函數(shù)配合匿名函數(shù)Lambda使用
def check_score(score): if score > 60: return True else: return False if __name__ == '__main__': # 成績列表 student_score = {'zhangsan':98,'lisi':58,'wangwu':67,'laowang':99,'xiaoxia':57} # 篩選成績大于60的成績列表 result = filter(lambda score:score > 60,student_score.values()) # 與上面一行代碼等價(jià) # result = filter(check_score, student_score.values()) print(result) print(type(result)) # 將返回的迭代器轉(zhuǎn)為列表list或者元組 print(list(result)) print(type(list(result)))
輸出結(jié)果:
<filter object at 0x000001B761F88FD0><class ’filter’>[98, 67, 99]<class ’list’>
注意:filter函數(shù)返回的是一個迭代器對象,往往在使用時需要先將其轉(zhuǎn)換為列表list或者元祖tuple之后再操作;
python filter函數(shù)其實(shí)和內(nèi)置函數(shù)map()使用方法類似,map()函數(shù)也是將迭代器或者序列中的每一個元素映射到指定的函數(shù)中,操作完成之后再返回修改后的迭代器對象;
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 解決Android Studio 格式化 Format代碼快捷鍵問題2. JavaEE SpringMyBatis是什么? 它和Hibernate的區(qū)別及如何配置MyBatis3. SpringBoot+TestNG單元測試的實(shí)現(xiàn)4. Python使用urlretrieve實(shí)現(xiàn)直接遠(yuǎn)程下載圖片的示例代碼5. 完美解決vue 中多個echarts圖表自適應(yīng)的問題6. vue實(shí)現(xiàn)web在線聊天功能7. Springboot 全局日期格式化處理的實(shí)現(xiàn)8. JavaScript實(shí)現(xiàn)頁面動態(tài)驗(yàn)證碼的實(shí)現(xiàn)示例9. php解決注冊并發(fā)問題并提高QPS10. Java使用Tesseract-Ocr識別數(shù)字
