filter使用python3代碼進(jìn)行迭代元素的方法

小編給大家分享一下filter使用python3代碼進(jìn)行迭代元素的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),吉林企業(yè)網(wǎng)站建設(shè),吉林品牌網(wǎng)站建設(shè),網(wǎng)站定制,吉林網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,吉林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

filter用于過(guò)濾篩選可迭代對(duì)象中的元素,如果符合條件則返回對(duì)應(yīng)的元素序列(類型為filter),filter接受兩個(gè)參數(shù),一個(gè)是函數(shù)用于篩選元素,返回值為True或Flase,另一個(gè)是可迭代對(duì)象。

filter用法

evens = filter(is_odd, range(-5, 10))
print(list(evens))

示例結(jié)果:

[2, 4, 6, 8]

filter函數(shù)的返回值是一個(gè)可迭代對(duì)象,這一點(diǎn)很關(guān)鍵,這也是為什么我說(shuō)filter函數(shù)是高級(jí)語(yǔ)法的原因。

為什么不返回列表?,如果返回的是列表,那么在filter函數(shù)執(zhí)行過(guò)程中,就必須對(duì)列表里的每一個(gè)數(shù)據(jù)進(jìn)行對(duì)2取模運(yùn)算,這樣很浪費(fèi)空間,因此filter在實(shí)現(xiàn)時(shí)采用了迭代器技術(shù),將計(jì)算延遲到對(duì)filter函數(shù)返回結(jié)果進(jìn)行遍歷時(shí)才進(jìn)行。

怎么驗(yàn)證上面的說(shuō)法呢,對(duì)代碼稍加修改

from collections import Iterable
 
def func(x):
    print("接收參數(shù)" + str(x))
    return x%2 == 0
 
lst = [1, 2, 5, 6, 7]
res = filter(func, lst)
# res 是一個(gè)可迭代對(duì)象
print(isinstance(res, Iterable), type(res))
 
for item in res:
print(item)

 

現(xiàn)在,我不使用lambda表達(dá)式對(duì)數(shù)據(jù)進(jìn)行判斷,而是使用自由度更高的函數(shù),在函數(shù)func中,我輸出接收到的參數(shù),如果對(duì)lst數(shù)據(jù)中的過(guò)濾發(fā)生執(zhí)行filter函數(shù)期間,那么,在輸出res類型之前,就會(huì)執(zhí)行函數(shù)func中的print語(yǔ)句,現(xiàn)在來(lái)看程序?qū)嶋H的執(zhí)行結(jié)果

True <class 'filter'>
接收參數(shù)1
接收參數(shù)2
2
接收參數(shù)5
接收參數(shù)6
6
接收參數(shù)7

程序輸出結(jié)果表明,在執(zhí)行filter函數(shù)時(shí),并沒(méi)有調(diào)用func函數(shù)對(duì)lst中的數(shù)據(jù)進(jìn)行過(guò)濾,而是在對(duì)res進(jìn)行遍歷時(shí)才調(diào)用func函數(shù)進(jìn)行過(guò)濾。

以上是“filter使用python3代碼進(jìn)行迭代元素的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站題目:filter使用python3代碼進(jìn)行迭代元素的方法
文章起源:http://bm7419.com/article40/geioeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、App開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)