gpt4 book ai didi

python - 查找两个非常大的列表之间的差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:58 25 4
gpt4 key购买 nike

我有两个非常大的列表,一个长 331991 个元素,我们称它为 a,另一个长 99171 个元素,称它为 b。我想比较 a 和 b,然后返回 a 中不在 b 中的元素列表。这也需要尽可能高效,并且按照它们出现的顺序,这可能是给定的,但我想我也可以把它放在那里。

最佳答案

可以在 O(m + n) 时间内完成,其中 m 和 n 对应于两个列表的长度:

exclude = set(b)  # O(m)

new_list = [x for x in a if x not in exclude] # O(n)

这里的关键是集有恒定时间的包含测试。或许您可以考虑让 b 成为一个集合。

另请参阅:List Comprehension


使用 your example :

>>> a = ['a','b','c','d','e']
>>> b = ['a','b','c','f','g']
>>>
>>> exclude = set(b)
>>> new_list = [x for x in a if x not in exclude]
>>>
>>> new_list
['d', 'e']

关于python - 查找两个非常大的列表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com