當(dāng)前位置:
首頁 >
Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap
發(fā)布時(shí)間:2024/1/1
50
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Python中的map函數(shù)非常有用,在字符轉(zhuǎn)換和字符遍歷兩節(jié)都出現(xiàn)過,現(xiàn)在,它又出現(xiàn)了,會(huì)給我們帶來什么樣的驚喜呢?是不是要告訴我們,map是非常棒的,以后要多找它玩呢?
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
( ... 太多了,不要全輸出來吧~~)
import?itertools
def?anyTrue(predicate,?sequence):
????return?True?in?itertools.imap(predicate,?sequence)
def?endsWith(s,?*endings):
????return?anyTrue(s.endswith,?endings)
imap 等價(jià)于:
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)
具體的實(shí)例
我們需要在目錄中遍歷,包括子目錄(哈哈),找出所有后綴為: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)
輸出結(jié)果
來看看有什么好東東:[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
( ... 太多了,不要全輸出來吧~~)
擴(kuò)展
CookBook一書中,提供的是itertools.imap來實(shí)現(xiàn)對(duì)字符串的過濾。imap和map不同的是,imap返回的是一個(gè)iteration對(duì)象,而map返回的是一個(gè)list對(duì)象。代碼如下:import?itertools
def?anyTrue(predicate,?sequence):
????return?True?in?itertools.imap(predicate,?sequence)
def?endsWith(s,?*endings):
????return?anyTrue(s.endswith,?endings)
imap 等價(jià)于:
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) - Python正則表達(dá)式操作指南(re使用)(轉(zhuǎn))??
Python 天天美味(16) - 過濾字符串的技巧,map與itertools.imap??
Python 天天美味(17) - open讀寫文件??
Python 天天美味(18) - linecache.getline()讀取文件中特定一行??
...
本文轉(zhuǎn)自CoderZh博客園博客,原文鏈接:http://www.cnblogs.com/coderzh/archive/2008/05/09/1190173.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: h5原生audio播放amr格式的音频
- 下一篇: python中怎么调整代码字体格式,py