Voj*_*lko 22 python performance list
在不保留顺序的情况下在Python中统一列表的最快方法?我在互联网上看到了许多复杂的解决方案 - 它们能否比简单的更快:
list(set([a,b,c,a]))
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 26
转到集合仅适用于列表,以便所有项目都可以清洗 - 例如,在您的示例中c = [],您提供的代码将引发异常.对于不可清洗但可比较的项目,对列表进行排序,然后使用itertools.groupby从中提取唯一项目,是最佳可用解决方案(O(N log N)).如果物品既不是全部可以清洗,也不是全部可比较,那么您唯一的"最后沟渠"解决方案就是O(N squared).
您可以编写一个函数来"统一"任何使用最佳可用方法的列表,方法是按顺序尝试每个方法,在第一个和第二个周围使用try/ except(return结果或者在try子句结尾处,或者,优雅地,在声明的一个else条款中try;-).
Mat*_*ner 23
set([a, b, c, a])
Run Code Online (Sandbox Code Playgroud)
如果可能,请保留该格式.
Peter Bengtsson 的这篇更新文章提出了在 Python 3.6+ 中创建唯一项目列表的两种最快方法:
# Unordered (hashable items)
list(set(seq))
# Order preserving
list(dict.fromkeys(seq))
Run Code Online (Sandbox Code Playgroud)