c*********3 发帖数: 197 | 1 有一list,如何去掉重复项。
例: ['a', 'a', 'b','c','c'] => ['a','b', 'c'] | w****i 发帖数: 964 | | c*********3 发帖数: 197 | 3 要保持原来的顺序呢?
例: ['a', 'a', 'b','c','c'] => ['a','b', 'c']
list(set()) => ['a','c','b']
不保证顺序 | e*n 发帖数: 1511 | 4 a=['a', 'a', 'b','c','c']
b=[]
[b.append(k) for k in a if not k in b]
我猜这个比set慢。
【在 c*********3 的大作中提到】 : 要保持原来的顺序呢? : 例: ['a', 'a', 'b','c','c'] => ['a','b', 'c'] : list(set()) => ['a','c','b'] : 不保证顺序
| c*********3 发帖数: 197 | 5 a=['a', 'a', 'b','c','c']
b={}
[b.setdefault(k,k) for k in a if not k in b]
看这个如何? | e*n 发帖数: 1511 | 6 @_@ 你怎么自问自答啊?
【在 c*********3 的大作中提到】 : a=['a', 'a', 'b','c','c'] : b={} : [b.setdefault(k,k) for k in a if not k in b] : 看这个如何?
| c*********3 发帖数: 197 | 7 不能光问问题呀。自己也要琢磨。要不怎么能学东西? | w****i 发帖数: 964 | 8 in list is usually a slow operation, this revision would be much faster:
b, c = [], set([])
dummy=[(b.append(k), c.add(k)) for k in a if not k in c]
tested to be about the same speed as caveman's solution
【在 e*n 的大作中提到】 : a=['a', 'a', 'b','c','c'] : b=[] : [b.append(k) for k in a if not k in b] : 我猜这个比set慢。
| e*n 发帖数: 1511 | 9 你这个够smart code的标准了。
【在 w****i 的大作中提到】 : in list is usually a slow operation, this revision would be much faster: : b, c = [], set([]) : dummy=[(b.append(k), c.add(k)) for k in a if not k in c] : tested to be about the same speed as caveman's solution
|
|