gpt4 book ai didi

python - 联合集或检查整个列表是否重复更快?

转载 作者:太空狗 更新时间:2023-10-29 21:13:03 25 4
gpt4 key购买 nike

抱歉标题措辞不佳,但我之前问过一个关于从两个列表中获取唯一项目列表的问题。人们告诉我先列出列表 -> 集合,然后合并。

所以现在我想知道这样做是否更快:

  1. 一个项添加到列表时,扫描整个列表以查找重复项。
  2. 将其中一项设为一个集合,然后合并集合。

事后看来,我可能应该读一下集合......

顺便说一下,在 Python 中 - 很抱歉没有澄清。

最佳答案

如您所见,将一个列表扩展到另一端,然后通过设置来删除重复项是最快的方法(至少在 python 中;))

>>> def foo():
... """
... extending one list by another end then remove duplicates by making set
... """
... l1 = range(200)
... l2 = range(150, 250)
... l1.extend(l2)
... set(l1)
...
>>> def bar():
... """
... checking if element is on one list end adding it only if not
... """
... l1 = range(200)
... l2 = range(150, 250)
... for elem in l2:
... if elem not in l1:
... l1.append(elem)
...
>>> def baz():
... """
... making sets from both lists and then union from them
... """
... l1 = range(200)
... l2 = range(150, 250)
... set(l1) | set(l2)
...
>>> from timeit import Timer
>>> Timer(foo).timeit(10000)
0.265153169631958
>>> Timer(bar).timeit(10000)
7.921358108520508
>>> Timer(baz).timeit(10000)
0.3845551013946533
>>>

关于python - 联合集或检查整个列表是否重复更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674208/

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