2010年11月1日 星期一

過濾重複性的資料

我們常會在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 秒
驚人吧~~~

沒有留言:

張貼留言