python 消除序列的重复值,并保持原来顺序
1、如果仅仅消除重复元素,可以简单的构造一个集合
$ python
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.
>>> a = [1 , 3, 5, 1, 8, 1, 5]
>>> set(a)
{8, 1, 3, 5}
>>>
2、利用集合或者生成器解决:值必须是hashable类型
$ python Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type \"help\", \"copyright\", \"credits\" or \"license\" for more information. >>> def dupe(items): ... seen = set() ... for item in items: ... if item not in seen: ... yield item ... seen.add(item) ... >>> a = [1 , 3, 5, 1, 8, 1, 5] >>> list(dupe(a)) [1, 3, 5, 8] >>>
3、消除元素不可哈希:如字典类型
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.
>>> def rem(items, key=None):
... seen = set()
... for item in items:
... va = item if key is None else key(item)
... if va not in seen:
... yield item
... seen.add(va)
...
>>> a = [ {\'x\':1, \'y\':2}, {\'x\':1, \'y\':3}, {\'x\':1, \'y\':2}, {\'x\':2, \'y\':4}]>>> list(rem(a, key=lambda d: (d[\'x\'],d[\'y\'])))
[{\'y\': 2, \'x\': 1}, {\'y\': 3, \'x\': 1}, {\'y\': 4, \'x\': 2}]
>>> list(rem(a, key=lambda d: d[\'x\']))
[{\'y\': 2, \'x\': 1}, {\'y\': 4, \'x\': 2}]
>>>>>> #lambda is an anonymous function:
... fuc = lambda : \'haha\'
>>> print (f())
>>> print (fuc())
haha
>>>
以上这篇python消除序列的重复值并保持顺序不变的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
继续阅读与本文标签相同的文章
-
五大典型场景中的API自动化测试实践
2026-05-19栏目: 教程
-
历时五天用 SwiftUI 做了一款 APP,阿里工程师如何做的? | 9月5号栖夜读
2026-05-19栏目: 教程
-
CAD如何批量导出PDF文件?别说PDF了!GIF我都能给你导出来
2026-05-19栏目: 教程
-
活动回顾丨阿里云业务中台最佳实践沙龙圆满落幕
2026-05-19栏目: 教程
-
在CentOS里查看ssh的登录记录
2026-05-19栏目: 教程
