当前位置:   article > 正文

Python常用列表、元组、集合、字典、队列等运行时间复杂度总结_python列表操作时间复杂度

python列表操作时间复杂度

在这里插入图片描述
此页面记录了当前CPython中各种操作的时间复杂度(又名“Big O”或“大欧”)。其他Python实现(或CPython的旧版本或仍在开发版本)可能具有略微不同的性能特征。但是, 通常可以安全地假设它们的速度不超过O(log n)。 通常, 'n’是容器中当前元素的数量。'k’是参数的值或参数中的元素数。

1. list

lst = list(range(10,20))
l1 = list(range(100,105))
  • 1
  • 2
'
运行
操作时间复杂度描述
lst[2]O(1)访问元素
lst.pop()O(1)弹出最后一个值
lst.append(l1)O(1)在末尾添加元素
lst.extend(l1)O(K)在末尾逐个添加元素
lst.clear()O(1)清空list
lst.copy()O(N)列表拷贝
lst.count(15)O(N)元素计数
lst.remove(15)O(N)删除一个元素
lst.reverse()O(N)反序
lst.sort()O(N*log(N))排序
lst.insert(1,200)O(N)在某一位置插入元素
del lst[0]O(N)删除某个位置的元素
lst.index(15)O(N)查找元素,并返回元素位置
bisect.bisect_left(lst, 15)O(log(N))有序列表使用bisect查找元素

在这里插入图片描述

2. tuple

tuple因为不可写,因此操作相对较少

tpl = tuple(range(10))
  • 1
'
运行
操作时间复杂度描述
tpl[2]O(1)访问元素
tpl.count(2)O(N)元素计数
tpl.index(2)O(N)查找元素,并返回元素位置

3. set

ss1 = set(range(10))
ss2 = set(range(5,15))
  • 1
  • 2
'
运行
操作时间复杂度描述
5 in ss1O(1)判断元素是否在set中
ss1ss2O(len(ss1)+len(ss2))
ss1 & ss2O(len(s)*len(t))取交集,等同于ss1.intersection(ss2)
ss1 - ss2O(len(ss1))取差集,等同于ss1.difference(ss2)
ss1 ^ ss2O(len(ss1)*len(ss2))取异或集,等同于
ss1.add(11)O(1)增加元素
ss1.pop()O(1)弹出一个元素
ss1.remove(5)O(1)删除指定元素

在这里插入图片描述

4. dict

dd = {'a':10,'b':20,'c':30,'d':40}
  • 1
'
运行
操作时间复杂度描述
dd[‘e’] = 50O(1)插入元素
dd[‘a’]O(1)访问元素,等同于dd.get(‘a’)
del dd[‘a’]O(1)删除元素
dd[‘b’] = 100O(1)修改元素
dd.pop(‘b’)O(1)弹出一个元素
dd.clear()O(1)清空字典

在这里插入图片描述

5. deque

双端队列需要我们手动导入后才能使用,也是Python中一种常用的类型

from collections import deque
deq = deque(range(10))
ll = list(range(10))
  • 1
  • 2
  • 3
'
运行
操作时间复杂度描述
deq.pop()O(1)弹出最右侧的元素
deq.popleft()O(1)弹出最左侧的元素
deq.append(1)O(1)在右侧增加一个元素
deq.appendleft(1)O(1)在左侧增加一个元素
deq.extend(ll)O(K)在右侧逐个添加元素
deq.extendleft(ll)O(K)在左侧逐个添加元素
deq.rotate(K)O(K)旋转
deq.remove(5)O(N)删除指定元素
deq[0]O(1)访问第一个元素
deq[N-1]O(1)访问最后一个元素
deq[N/2]O(N)访问中间元素

在这里插入图片描述
参考链接:https://wiki.python.org/moin/TimeComplexity

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/960639
推荐阅读
相关标签
  

闽ICP备14008679号