無聊統計了下列表去重到底有多少種方法。
1.集合
list(set(alist))
如果要保持順序:
import random
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
b=list(set(a))
b.sort(key=a.index)
2.字典
大都是利用雜湊表特性
{}.fromkeys(alist).keys()
或者手動寫:
import random
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
d={}
for i in a:
d[i]=1
print d.keys()
3.排序後查重
import random
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
a.sort()
print [x for i,x in enumerate(a) if not i or x!=a[i-1]]
4.itertools.groupby
import random
import itertools
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
a.sort()
print [x[0] for x in itertools.groupby(a)]
5.遍歷
import random
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
b=for i in a:
if i not in b:
或者用reduce:
import random
import functools
if __name__=='__main__':
a=[random.randint(0,10) for i in xrange(10)]
functools.reduce(lambda x,y:x if y in x else x+[y],[,]+a)
還有其它方法沒?
python中df去重 python去重函式是什麼
資料去重可以使用duplicated 和drop duplicates 兩個方法。dataframe.duplicated subset none,keep first 返回boolean series表示重複行 引數 subset 列標籤或標籤序列,可選 僅考慮用於標識重複項的某些列,預設情況下使...
Python 序列去重
1 效率最高的方式,需要保證序列中的元素都是可雜湊的,即數值 字串 元組 frozenset等,而列表 字典 集合之類的就不行。def foo s try return list set s expect expection,e pass 2 效率中的方式,需要保證序列中的元素都是可排序的。def ...
python去重指令碼
可以用來去除字典 漏洞數量等 使用方法,將要去重的部分儲存成為csv格式,並命名為all.csv,直接執行後,會在當前目錄下生成qc.csv的檔案!coding utf 8 ciku open r all.csv r 開啟需要去重檔案 xieci open r qc.csv w 開啟處理後存放的檔案...