首页 > 后端开发 > Python教程 > 在 Python 中如何在保留顺序的同时有效地从列表中删除重复项?

在 Python 中如何在保留顺序的同时有效地从列表中删除重复项?

Barbara Streisand
发布: 2024-12-31 05:50:13
原创
722 人浏览过

How Can I Efficiently Remove Duplicates from a List While Preserving Order in Python?

从列表中删除重复项时保留顺序

从列表中删除重复元素同时保持原始顺序可能是一个挑战,因为使用消除重复的集合通常会破坏初始序列。

为了解决这个问题,Python 社区开发了各种内置和惯用的解决方案。最有效的选项之一是称为 f7 的函数,它利用一组来有效地检测和删除重复项:

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]
登录后复制

此函数使用名为 see 的集来快速识别和删除重复项。秘密优化在于将 saw.add 作为局部变量分配给 saw_add 。这会阻止 Python 在每次迭代时动态解析 saw.add,这可能会由于 saw.add 可能发生更改而导致性能下降。

其他替代方案,例如 ActiveState 中的有序集数据结构,包括如果您预计在同一数据集上执行频繁的重复删除操作,也可以使用。

必须注意,在提供的代码中,seen.add() 始终返回 None,因此需要使用逻辑或运算符作为触发集合更新的方法。

以上是在 Python 中如何在保留顺序的同时有效地从列表中删除重复项?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板