PEP 270 – 列表对象的 uniq 方法
- 作者:
- Jason Petrone <jp at demonseed.net>
- 状态:
- 已拒绝
- 类型:
- 标准跟踪
- 创建日期:
- 2001年8月21日
- Python 版本:
- 2.2
- 发布历史:
注意
该PEP已被作者撤回。他写道:
从列表中删除重复元素是一个常见的任务,但我认为将其内置到语言中的原因只有两个。第一个是如果它能做得更快,但这并非如此。第二个是如果它能显著简化代码编写。sets.py的引入消除了这种情况,因为创建一个没有重复项的序列只是选择不同数据结构的问题:选择集合而不是列表。
如 PEP 218 所述,集合正在添加到 Python 2.3 的标准库中。
摘要
此PEP提议为列表对象添加一个删除重复元素的方法。
基本原理
从列表中删除重复项是一个常见的任务。我认为它足够有用和通用,可以作为列表对象中的一个方法。当用 C 实现时,它也有可能实现更快的执行,特别是如果不能使用哈希或排序优化的话。
在 comp.lang.python 上,有许多许多帖子 [1] 询问完成此任务的最佳方法。最优实现有点棘手,很高兴能省去人们自己琢磨的麻烦。
考虑
Tim Peters 建议尝试使用哈希表,然后尝试排序,最后回退到暴力方法 [2]。uniq 是否应该以牺牲速度为代价来保持列表顺序?
是拼作“uniq”还是“unique”?
参考实现
我写了暴力版本。在 listobject.c 中大约有 20 行代码。添加对哈希表和排序去重功能的支持只需再花一个小时左右。
参考资料
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0270.rst