Python のマップ関数は、文字変換セクションと文字トラバース セクションの両方で登場しましたが、今度はどのような驚きをもたらすのでしょうか。マップは素晴らしいので、将来的にはもっとプレイする必要があると言いたいのでしょうか?
具体的な例
サブディレクトリ (笑) を含むディレクトリを走査し、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] Lost Season 4 04.rmvb
[ロスト シーズン 4].Lost.S04E00.rmvb
[ロスト シーズン 4][エピソード 02][中国語字幕].rmvb
「ロスト シーズン 4」エピソード 05 [中国語字幕].rmvb
「ロスト シーズン 4」[エピソード 02][中国語字幕]シーズン 4」エピソード 06 [中国語字幕].rmvb
「ロスト シーズン 4」エピソード 07 [中国語字幕].rmvb
ゴッドセンド シーズン 2 01.rmvb
ゴッドセンド シーズン 2 02.rmvb
ゴッドセンド シーズン 2 03.rmvb
ゴッドセンド シーズン 2 04.rmvb
Godsend Season 2 05.rmvb
Beautiful Mind (bbs.cnxp.com).A.Beautiful.Mind. 2001.CD1.rmvb
(...多すぎるので、全部出力しないでください~~)
拡張機能
CookBook は、文字列をフィルタリングするための itertools.imap を提供します。 imap と map の違いは、imap は反復オブジェクトを返すのに対し、map はリスト オブジェクトを返すことです。コードは次のとおりです:
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 のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。