Python天天美味(16) – 過濾字串的技巧,map與itertools.imap

來源:互聯網
上載者:User
文章目錄
  • 具體的執行個體
  • 輸出結果
  • 擴充
Python中的map函數非常有用,在字元轉換和字元遍曆兩節都出現過,現在,它又出現了,會給我們帶來什麼樣的驚喜呢?是不是要告訴我們,map是非常棒的,以後要多找它玩呢?
具體的執行個體

我們需要在目錄中遍曆,包括子目錄(哈哈),找出所有尾碼為:rmvb ,avi  ,pmp 的檔案。(天哪?!你要幹什嗎?這可是我的隱私啊~~)import os

def anyTrue(predicate, sequence):
    return True in map(predicate, sequence)

def filterFiles(folder, exts):
    for fileName in os.listdir(folder):
        if os.path.isdir(folder + '/' + fileName):
            filterFiles(folder + '/' + fileName, exts)
        elif anyTrue(fileName.endswith, exts):
            print fileName

exts = ['.rmvb', '.avi', '.pmp']
filterFiles('/media/Personal/Movie', exts)

輸出結果

來看看有什麼好東東:[66影視www.66ys.cn]迷失第四季04.rmvb
[迷失.第4季].Lost.S04E00.rmvb
[迷失Lost第四季][第02集][中文字幕].rmvb
《迷失Lost第四季》第05集[中文字幕].rmvb
《迷失Lost第四季》第06集[中文字幕].rmvb
《迷失Lost第四季》第07集[中文字幕].rmvb
天賜第2季01.rmvb
天賜第2季02.rmvb
天賜第2季03.rmvb
天賜第2季04.rmvb
天賜第2季05.rmvb
影視帝國(bbs.cnxp.com).美麗心靈.A.Beautiful.Mind.2001.CD1.rmvb
( ... 太多了,不要全輸出來吧~~)

擴充

CookBook一書中,提供的是itertools.imap來實現對字串的過濾。imap和map不同的是,imap返回的是一個iteration對象,而map返回的是一個list對象。代碼如下:import itertools
def anyTrue(predicate, sequence):
    return True in itertools.imap(predicate, sequence)
def endsWith(s, *endings):
    return anyTrue(s.endswith, endings)

imap 等價於:def imap(function, *iterables):
         iterables = map(iter, iterables)
         while True:
             args = [i.next() for i in iterables]
             if function is None:
                 yield tuple(args)
             else:
                 yield function(*args)

Python 天天美味系列(總)

Python 天天美味(14) - splitlines  

Python 天天美味(15) - PythonRegex操作指南(re使用)(轉)  

Python 天天美味(16) - 過濾字串的技巧,map與itertools.imap  

Python 天天美味(17) - open讀寫檔案  

Python 天天美味(18) - linecache.getline()讀取檔案中特定一行  

...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.