Python对list列表结构中的值进行去重的方法总结
今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。 ids = [1,2,3,4,5,6,1] news_ids = [] for id in ids: if id not in news_ids: news_ids.append(id) print news_ids 这样也可行,但是看起来不够爽。 ids = [1,1] ids = list(set(ids)) 这样的结果是没有保持原来的顺序。 ids = [1,1] news_ids = list(set(ids)) news_ids.sort(ids.index) 使用itertools.grouby ids = [1,1] ids.sort() it = itertools.groupby(ids) for k,g in it: print k 关于itertools.groupby的原理可以看这里:http://docs.python.org/2/library/itertools.html#itertools.groupby In [5]: ids = [1,1] In [6]: func = lambda x,y:x if y in x else x + [y] In [7]: reduce(func,[[],] + ids) Out[7]: [1,6] 上面是我在ipython中运行的代码,其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y] 。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |