参考:https://blog.csdn.net/baoli1008/article/details/48059623

注:下文中,’n’代表容器中元素的数量,’k’代表参数的值,或者参数的数量。

1.列表(list)

  • 以完全随机的列表考虑平均情况。

  • 列表是以数组(Array)实现的。

  • 最大的开销发生在超过当前分配大小的增长,这种情况下所有元素都需要移动;或者是在起始位置附近插入或者删除元素,这种情况下所有在该位置后面的元素都需要移动。

  • 如果需要在一个队列的两端进行增删的操作,应当使用collections.deque(双向队列)

  • 操作 操作说明 时间复杂度(平均情况) 时间复杂度(最坏情况)
    index(value) 查找list某个元素的索引 O(1) O(1)
    a=index(value) 索引赋值 O(1) O(1)
    list[:] 列表复制 O(n) O(n)
    list.append(value) 队尾添加 O(1) O(1)
    list.insert(index, value) 根据索引插入某个元素 O(n) O(n)
    list[index] 取元素 O(1) O(1)
    list[index]=value 赋值 O(1) O(1)
    list.pop() 队尾删除 O(1) O(1)
    list.pop(index) 根据索引删除某个元素 O(n) O(n)
    [i for i in list] 遍历/迭代 O(n) O(n)
    list[m:n] 取切片 O(k) O(k)
    del list[m:n] 删除切片 O(n) O(n)
    list[m:n]=[n] 更改切片 O(k+n) O(k+n)
    list.extend([]) 列表扩展 O(k) O(k)
    list.sort() 列表排序 O(nlogn) O(nlogn)
    list*n 列表乘法 O(nk) O(nk)
    i in list 列表搜索 O(n)  
    min(list), max(list) 取最大和最小值 O(n)  
    len(list) 计算长度 O(1) O(1)

2.字典(dict)

  • 下列字典的平均情况基于以下假设:

    • 对象的散列函数足够健壮(robust),不会发生冲突。
    • 字典的键是从所有可能的键的集合中随机选择的。
  • 操作 操作说明 平均情况 最坏情况
    copy 复制 O(n) O(n)
    dict[key] 取元素 O(1) O(n)
    dict[key]=value 更新元素 O(1) O(n)
    del dict[key] 删除元素 O(1) O(n)
    [i for i in dict] 遍历字典 O(n) O(n)
    i in dict 搜索元素 O(1) O(1)

3.集合(set)

  • 操作 操作说明 平均情况 最坏情况
    i in set 搜索元素 O(1) O(n)
    set_1 | set_2 并集 O(len(set_1)+len(set_2))  
    set_1 & set_2 交集  O(min(len(set_1), len(set_2)) O(len(set_1) * len(set_2))
    set_1 - set_2 差集  O(len(set_1))  
    set.difference_update(set_2) 更新  O(len(set_2))  
    set^t 对称差集  O(len(set)) O(len(set) * len(t))
    set.symmetric_difference_update(t)   O(len(t)) O(len(t) * len(set))
  • 差集(set_1 - set_2,或set_1.difference(set_2))运算与更新为差集(set_1.difference_uptate(set_2))运算的时间复杂度并不相同:

    • 前者是将在set_1中,但不在set_2中的元素添加到新的集合中,因此时间复杂度为O(len(set_1))。
    • 后者是将在set_2中的元素从set_1中移除,因此时间复杂度为O(len(set_2))。

Python几种数据结构内置方法的时间复杂度的更多相关文章

  1. Python 数据类型常用的内置方法(三)

    目录 Python 数据类型常用的内置方法(三) 1.列表内置方法 1.sort():升序 2.reverse():颠倒顺序 3.列表比较运算 2.字典内置方法 1.对Key的操作 2.len( )- ...

  2. Python 数据类型常用的内置方法(二)

    目录 Python 数据类型常用的内置方法(二) 1.字符串类型常用内置方法 1.upper.lower.isupper.islower 2.startswith.endswith 3.format ...

  3. Python 数据类型常用的内置方法(一)

    目录 Python 数据类型常用的内置方法 1.整型 int 2.浮点型 float 字符串转浮点型: 3.字符串 str 多种类型转字符型: 索引 切片 len( )方法:统计字符串长度/个数 移除 ...

  4. 《Python》反射、内置方法(__str__,__repr__)

    一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 ...

  5. python 面向对象反射以及内置方法

    一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...

  6. python今日分享(内置方法)

    目录 一.习题详解 二.数据类型的内置方法理论 三.整型相关操作 四.浮点型相关操作 五.字符串相关操作 六.列表相关操作 今日详解 一.习题详解 1.计算1-100所有数据之和 all_num = ...

  7. python 基本数据类型以及内置方法

    一.数字类型 # 一.整型int # ======================================基本使用====================================== ...

  8. python面向对象 : 反射和内置方法

    一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类  (注:type(对象名) is 类名 : 判断对象所属 ...

  9. python基础之反射内置方法元类

    补充内置函数 isinstance(obj,Foo)   # 判断obj是不是foo的实例 issubclass()      # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...

随机推荐

  1. openresty的安装和使用

    1,简介 OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,是一个强大的 Web 应用服务器,在性能方面,OpenResty可以 快速构造出足以 ...

  2. spring的一些其他功能

    今天看书,知识点多一点了,涉及到了较多的知识,如scheduling计划任务,spring对多线程的支持,以及配置开发.测试和生产环境的profile.这些都是集成在spring中的,需要用时可以参考 ...

  3. EF Core 2.1变化

    EF Core 2.1随.NET Core 2.1一起发布,本篇文章总结一下EF Core的新增功能,先从简单的开始说. 一.延迟加载 延迟加载不用介绍了吧,直接看一下怎样配置吧.EF Core 2. ...

  4. J S 脚本语言 if() { if { } else { } } var a =100; switch { case ( ) break ; } 基础详解 , 最下面有例子

    注释语法 注释语法// 多行注释/ JS输出语句 JS样式尽量靠最下面写 <script type="text/javascript">//嵌入JS开始代码 //ale ...

  5. Win10正式版U盘安装教程

    1.首先我们需要登陆“微软中国下载中心”,从中下载一款名为“MediaCreationTool”的工具,利用该工具可以制作Win10安装U盘.直接通过以下地址快速进入“Windows下载中心”,根据自 ...

  6. Warning: Failed to halt at after bootloader, forced stop at

    该错误证实是因为 cc2650 SW下载模式,芯片复位引脚未接出来导致,芯片复位必须和下载器保持良好连接

  7. CSS:概念和三种样式

    简介: CSS(Cascading Style Sheets):层叠样式表,它用来控制HTML标签的样式,给网页结构穿衣服~ CSS的编写格式是键值对的形式  ->  格式:属性名 : 属性值: ...

  8. jvisualvm All-in-One Java Troubleshooting Tool

    java 监控.故障.性能可视化分析 VisualVM: Download https://visualvm.github.io/download.html All-in-One Java Troub ...

  9. 如何实现浏览器向服务器伪造refer?

    Request URL:https://www.getwnmp.org/ Request Method:GET Status Code:304 Remote Address:45.55.134.251 ...

  10. Linux下稀疏文件的存储方式

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...