python dict 时间复杂度_Python上的时间复杂度

1c777c41e97af1a2b11574c25897c176.png

在计算机科学中,算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。 这是一个代表算法输入值的字符串的长度的函数。

想必大家都听过下面这么一段话,但要把这个当真理,那恐怕很容易写出效率不高的代码。

0997878d60b836730ead9ddde3a30995.png
在编程过程中,不同的数据代表着不一样的作用,并且他们的执行效率也会不一样。

0x00 大O表示法

大O符号,又称为渐进符号,是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个函数来描述一个函数数量级的渐近上界。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

这里简单通过一张图来说明下他们的关系。

c0d5d0b5b962a223803e78564aab1820.png

而后我们将逐一介绍python3中的常见对容器的操作效率之分。

0x00 List列表

列表应该是我们用到最为频繁的对象类型了

f32c1239c205f47d2531954d1d3aa2aa.png

0x01 Set集合

大部分set操作的时间复杂度都为O(1)

40f564cb0f63fef73b2f784fd6131043.png

0x02 dict字典及defaultdict默认字典

可以看到大部分的dict操作也是O(1)

3516a2a4198f742dfbf3d879b14a28ed.png

0x03 collections.deque双向队列

这个东西有点像list 但显然比list好用多了

b036df48dad1f9862b7e063697570db9.png

当然,类似item in/not in set(list)这样的操作并没有多大的意义,在时间复杂度上任然是O(len(list))。即便set的成员对象判断上为O(1),但把list转换为set的过程已经是个取决于list长度的操作了。

引自 https://www. ics.uci.edu/~pattis/ICS -33/lectures/complexitypython.txt
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值