加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在查找成员资格时,Set比列表快得多

发布时间:2020-12-20 11:32:03 所属栏目:Python 来源:网络整理
导读:如何设置查找元素比列表快得多,是否与列表中的有序维护有关?或者查找算法的集合是否与列表不同? from timeit import Timer Timer("100042 in L","L=range(100000)").timeit(number=10000)21.69940710067749 Timer("100042 in S","S=set(range(100000))").t
如何设置查找元素比列表快得多,是否与列表中的有序维护有关?或者查找算法的集合是否与列表不同?

>>> from timeit import Timer    
>>> Timer("100042 in L","L=range(100000)").timeit(number=10000)
21.69940710067749
>>>
>>> Timer("100042 in S","S=set(range(100000))").timeit(number=10000)
0.0006740093231201172
>>>

有人请求指出两者之间使用的链接或算法吗?

解决方法

set使用散列( it allows only items which are hashable),它比列表的顺序访问快得多,用于随机查找.

但是,如果正在搜索的项目位于开头,则列表可能会超过设置.

from timeit import Timer
print Timer("0 in L","L=range(100000)").timeit(number=10000)
print Timer("0 in S","S=set(range(100000))").timeit(number=10000)

在我的机器上输出

0.00127078635541
0.00143169642464

编辑:here记录了各种对象的不同操作的时间复杂度.感谢@mgilson

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读