用set内定函数过滤资料效率惊人
我们常会在python 教学文章里看到
>>> li = ['1', 'd', 'd', 'e', 'a','c']
>>> set(li)
set(['1', 'a', 'c', 'e', 'd'])
>>>
set内定函数可以帮我们完成过滤资料的动作,但这样就像叫一个天才做打扫厕所的工作,难免无法显现出它的伟大之处。
最近工作上,就遇到需一次大量过滤重复的资料,重辄数十万的资料,那时我还没想起可用set,就直接写个程式来做这件事情。
>>> fobj = open('userlist.txt', 'r')
>>> ul = []
>>> for f in fobj:
ul.append(f.strip('\n\r'))
>>> len(ul)
50000 总共要过滤的资料有五万笔
t1 = datetime.now()
newlist = []
for u in ul:
if u not in newlist:
newlist.append(u)
t2 = datetime.now()
print str(t2-t1)[:-4]
结果程式总共跑了 35.2秒
那么set来做会多快呢?
new = [i for i in set(ul)]
0.2 秒
惊人吧~~~
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
