Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 增强提案

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