Python数据类型常用操作复杂度

常用数据类型中,整型,浮点型,字符串类型的操作复杂度大多是O(1),这里主要讨论一下列表和字典相关操作的复杂度。
列表操作中
  1. 最常用的是按索引取值和赋值,如v = a[i],a[i] = v,由于列表随机访问的特性,这两个操作实际执行时间与列表大小无关,所以为O(1)
  2. 另一个是列表增长,可以使用append()和__add()__“+”。其中使用lst.append(v),直接在列表lst末尾拼接列表v,所以复杂度为O(1);而使用lst = lst + [v],执行复杂度为O(n+k),其中,n是列表lst的长度,k是列表v的长度,该操作需要先生成两个列表,然后再将生成的列表拼接。
  3. 还有常用的pop操作,直接使用lst.pop(),复杂度为O(1),但如果使用的是lst.pop(i),那么算法的复杂度为O(n),因为将i位置的元素pop后,需要将i位置后面的元素前移。前移操作的综合复杂度为O(n)。
    此外,列表其他操作及对应复杂度的关系有: insert(i,item) O(n)
    del operator O(n)
    iteration O(n)
    contains(in) O(n)
    get slice O(n)
    del slice O(n+k)
    concatenate O(k)
    reverse O(n)
    sort O(nlogn)
    multiply O(nk)
字典操作中

copy O(n)
get item O(1)
set item O(1)
del item O(1)
cotains(in) O(1)
iteration O(n)
虽然python对基本操作做了封装,但是对这些封装的基本操作方法的复杂度有所了解,有助于我们在编写程序时提高程序性能。更多python算法复杂度可以到官网查看:https://wiki.python.org/moin/TimeComplexity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值