odz #4426(2007/11/27 08:20 GMT) [ Python ] Rating0/0=0.00
やり方は多分 shiro さんと同じ。 プリプロセスありなら、内部でリストをソートするなりツリーを構築するなりするんだけど、リストを直接渡すという要求なら単純な手法かなぁ。 って、みんな思うことは一緒ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import sys import re import itertools def uniq(ls): return (k for k, g in itertools.groupby(ls)) def ls(pathList, dir): pat = re.compile('%s([^/]+/?)' % re.escape(dir)) matches = itertools.ifilter(None, (pat.match(path) for path in pathList)) return list(uniq(sorted([m.group(1) for m in matches]))) def main(args): pathList = 'aaa/bbb aaa/ccc aaa/ddd/eee bbb/ddd/eee'.split() print ls(pathList, 'aaa/') print ls(pathList, 'aaa/ddd/') if __name__ == '__main__': main(sys.argv[1:])
Rating0/0=0.00-0+
[ reply ]
odz #4426() [ Python ] Rating0/0=0.00
やり方は多分 shiro さんと同じ。 プリプロセスありなら、内部でリストをソートするなりツリーを構築するなりするんだけど、リストを直接渡すという要求なら単純な手法かなぁ。 って、みんな思うことは一緒ですね。
Rating0/0=0.00-0+
[ reply ]