filterobjectReturnaniteratoryieldingthoseitemsofiterableforwhichfunction(item)istrue.IffunctionisNone,returntheitemsthataretrue.從Doc的簡單描述可" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

filter用法--Python

系統 1781 0

filter被稱為高階函數是有道理的。

            
              filter(self, /, *args, **kwargs)

Docstring:      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.
            
          

?從Doc的簡單描述可以看出,filter的主要作用是通過function對iterable中的元素進行過濾,并返回一個迭代器(iterator),其中是function返回True的元素。如果function傳入None,則返回所有本身可以判斷為True的元素。

例1:

            
                  l = [x for x in range(10)]
    print(list(filter(lambda x : x%2 == 0, l)))
    #輸出[2,4,6,8]
            
          

因為filter返回的是一個iterator,所以輸出的時候需要用list進行轉換。

例2:

            
                  l = [x for x in range(0, 10)]
    print(list(filter(None, l)))
    #輸出[1,2,3,4,5,6,7,8,9]
            
          

和例1的輸入略有區別,輸入是0~9,filter的第一個參數傳入了None,所以在迭代過程中,0被判斷為False從而被過濾,1~9被保留下來。這個方法可以替代for循環的數據拾取。

通過上面的例子可以看出,調用filter時并沒有觸發過濾過程,因為調用filter函數只是返回了一個iterator,它是惰性計算,只有next或者list的時候,才真正開始計算過程。

上面是兩個基本的用法,接下來看filter的更高級一點兒的用法。

???

            
              def _odd_iter():
        n = 1
        while True:
            n = n + 2
            yield n
            
    def _not_divisible(n):
        return lambda x : x%n>0
     
    def primes():
        yield 2
        it = _odd_iter()
        ftr = filter(_not_divisible(2), it) #1
        while True:
            n = next(ftr )        #2
            yield n                
            ftr = filter(_not_divisible(n), ftr ) #3
            
    for n in primes():
        if n < 100:
            print('now:',n)
        else:
            break
            
          

通過這個例子,可以看到filter的兩個高級用法:

1.其實filter返回的是一個filter對象。#3行通過重復賦值,可以向filter中添加多個過濾器。例子中,就是通過每次執行#3行,把當前素數作為新的被除數條件加入到過濾器ftr 中,所以在for循環的后續迭代中,每次都增加一個素數條件進入過濾器。

通過這種重復賦值的方法,可以給filter添加多個過濾函數,極大的加強了過濾功能。

2. filter的第二個參數可以傳入iterator。當然,此時就不能用list取filter的結果,只能用next(filter對象)取下一個過濾結果為True的元素
?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产码欧美日韩高清综合一区 | 99热这里有免费国产精品 | 精彩视频一区二区三区 | 国产精品无码久久综合网 | 四虎影视免费在线 | 免费看欧美日韩一区二区三区 | 精品在线小视频 | 精品午夜久久影视 | 亚洲啪啪看看 | 国产福利视频一区二区三区 | 亚洲区精品久久一区二区三区 | 欧美成人四级hd版 | 一区二区不卡久久精品 | 日本毛片在线观看 | 日本1区2区3区 | 欧美国产日韩在线播放 | 成熟性xxxxx 成在线人免费视频一区二区三区 | 欧美狠狠干| 中文字幕在线观看2023 | 午夜一级毛片看看 | 99爱99| 男人的天堂久久香蕉国产 | 国产精品欧美一区二区 | 视频在线观看一区 | 在线国产一区二区三区 | 天天曰天天爽 | 变态 调教 视频 国产九色 | 久久性网| 一级毛片牲交大片 | 日韩视频区 | 毛片免费全部免费观看 | 欧美日韩国产另类一区二区三区 | 欧美亚洲黄色 | 午夜色网 | 天天舔天天舔 | 狠狠色丁香婷婷综合视频 | 97国产在线视频公开免费 | 天天摸夜夜添狠狠添2018 | 国产欧美另类久久久品 | 国产亚洲欧美在线视频 | 国产成人亚洲综合a∨婷婷 国产成人亚洲综合欧美一部 |