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
上次修改时间:2023-09-09 17:39:29 GMT