首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中,从列表中删除重复项的最快算法是什么,以便所有元素都是唯一的,同时保持顺序*?

在Python中,从列表中删除重复项的最快算法是什么,以便所有元素都是唯一的,同时保持顺序*?
EN

Stack Overflow用户
提问于 2008-09-18 01:25:21
回答 26查看 35.4K关注 0票数 45

例如:

代码语言:javascript
运行
复制
>>> x = [1, 1, 2, 'a', 'a', 3]
>>> unique(x)
[1, 2, 'a', 3]

假设列表元素是可引用的。

Clarification:结果应该保留列表中的第一个副本。例如,1,2,3,2,3,1变成1,2,3。

EN

Stack Overflow用户

发布于 2008-09-18 13:23:05

这里有一些很好的有效的解决方案。但是,对于不关心绝对最有效的O(n)解决方案的人,我将使用简单的一行O(n^2*log(n))解决方案:

代码语言:javascript
运行
复制
def unique(xs):
    return sorted(set(xs), key=lambda x: xs.index(x))

或者更有效的双线性O(n*log(n))解决方案:

代码语言:javascript
运行
复制
def unique(xs):
    positions = dict((e,pos) for pos,e in reversed(list(enumerate(xs))))
    return sorted(set(xs), key=lambda x: positions[x])
票数 1
EN
查看全部 26 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/89178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档