从列表中删除重复项时保留顺序
从列表中删除重复元素同时保持原始顺序可能是一个挑战,因为使用消除重复的集合通常会破坏初始序列。
为了解决这个问题,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中文网其他相关文章!