[英]Fastest Way To Remove Duplicates In Lists Python
我有两个非常大的列表,并且至少需要一秒钟来循环它,我需要做200,000次。 删除两个列表中的重复项以形成一个副本的最快方法是什么?
这是我能想到的最快的方式:
import itertools
output_list = list(set(itertools.chain(first_list, second_list)))
轻微更新:正如jcd指出的那样,根据您的应用程序,您可能不需要将结果转换回列表。 由于集合本身是可迭代的,因此您可以直接使用它:
output_set = set(itertools.chain(first_list, second_list))
for item in output_set:
# do something
请注意,任何涉及使用set()
解决方案都可能会重新排序列表中的元素,因此无法保证元素将按任何特定顺序排列。 也就是说,既然你正在组合两个列表,那么很难找到一个很好的理由为什么你需要对它们进行特定的排序,所以这可能不是你需要担心的事情。
我推荐这样的东西:
def combine_lists(list1, list2):
s = set(list1)
s.update(list2)
return list(s)
这消除了创建前两个串联的怪物列表的问题。
根据您对输出所做的操作,不要费心转换回列表。 如果订购很重要,你可能需要某种装饰/排序/不合理的恶作剧。
正如Daniel所说,一个集合不能包含重复的条目 - 所以连接列表:
list1 + list2
然后将新列表转换为集合:
set(list1 + list2)
然后回到列表:
list(set(list1 + list2))
result = list(set(list1).union(set(list2)))
我就是这样做的。 不过,我对表现并不是很确定,但它确实比手工操作更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.