Re: [问题] 去除列表的重复

楼主: TuCH (谬客)   2019-12-17 11:40:06
: l1 = ['b','c','d','b','c','a','a']
: s1 = set(l1)
: temp =set()
: while len(l1) > 1:
: temp.add(l1.pop())
: s1 = s1 & (temp ^ set(l1))
: print(list(s1))
: 非资工出身python初学者
: 借用这题来发问,要怎么计算code效率?
: 例如上面解法大于O(n)?
参考 pingxx123 大大的解法
"""
参考Counter的算法
l2 = dict()
for i in l1:
l2[i] = l2.get(i, 0) + 1
"""
上面三行等于
from collections import Counter
l2 = Counter(l1)
result = [key for key, value in l2.items() if value == 1]
不过自己刻算出来跟Counter 会差个两三倍左右 不知道是不是内建的有什么加速机制
作者: eric781101   2019-12-17 14:58:00
built-in modules are written in C. 一定会比自己写的快
作者: thefattiger (LT)   2019-12-18 01:32:00
写Python这种高阶语言还要自己刻的话不如去写C

Links booklink

Contact Us: admin [ a t ] ucptt.com