我需要找到从 Python 列表中删除重复项的最有效方法。
我这样做是这样的:
for i in mj:
if i not in mj2:
mj2.append(i)
wherekj
是一个列表[2, 4, 4, 4, 4, 4, 9, 9]
,输出mj2
格式为:
[2, 4, 9]
有一种更有效的方法不包括循环,因为我必须解析大型列表。
我需要找到从 Python 列表中删除重复项的最有效方法。
我这样做是这样的:
for i in mj:
if i not in mj2:
mj2.append(i)
wherekj
是一个列表[2, 4, 4, 4, 4, 4, 9, 9]
,输出mj2
格式为:
[2, 4, 9]
有一种更有效的方法不包括循环,因为我必须解析大型列表。
最简单的是使用
set()
:如果要保持顺序(因为
sets
是元素的无序列表),可以sort
在末尾传递 a :另一种选择,如果您的列表最初是有序的并且您想保持顺序,您可以使用该类
OrderedDict
并利用它来维护此顺序:OrderedDict
是一个字典的实现,它允许你“记住”它的元素被插入的顺序。因此,您可以使用fromkeys
字典方法将元素mj
用作字典的键,因为元素mj
是预先排序的,因此顺序得以保留。您可以使用以下代码行测试性能如何:
尽管使用 sorted 会消耗一些资源。如果您对订单没有问题,您可以使用如下:
itetools.groupby
如果原始列表非常大且有序,则使用创建迭代器而不创建新列表的效率要高得多:可以在不处理整个列表的情况下获取第一个元素:
对于“组”,您也可以这样做。