python中的序列结构《增删改查》的复杂度

news/2025/1/5 6:51:59/文章来源:https://www.cnblogs.com/lmc7/p/18648765

在 Python 中,不同的序列数据结构(如 listtuplesetdict 等)对增、删、改、查操作的时间复杂度不同。下面是对常见数据结构的总结,按操作类型(增、删、改、查)分析它们的时间复杂度:

1. list(列表)

  • 查找操作(如 inindex()):

    • 时间复杂度:O(n)
    • 原因:需要遍历列表,检查每个元素是否匹配。
  • 插入操作(如 append()insert()):

    • 时间复杂度
      • append():O(1)
      • insert():O(n)
    • 原因append() 是在末尾添加元素,不需要移动其他元素,insert() 需要移动元素来腾出位置。
  • 删除操作(如 remove()pop()):

    • 时间复杂度
      • remove():O(n)
      • pop():O(1)(移除末尾元素)
      • pop(i):O(n)(移除特定位置元素,需要移动其他元素)
    • 原因remove() 需要遍历列表查找要删除的元素,pop(i) 需要移动后续元素。
  • 修改操作(如 list[i] = value):

    • 时间复杂度:O(1)
    • 原因:直接根据索引修改列表中的元素。

2. tuple(元组)

  • 查找操作(如 inindex()):

    • 时间复杂度:O(n)
    • 原因:与 list 类似,需要遍历元组。
  • 插入操作

    • 时间复杂度:O(n)
    • 原因tuple 是不可变的,插入操作需要创建一个新的元组。
  • 删除操作

    • 时间复杂度:O(n)
    • 原因:同样需要创建一个新的元组来删除元素。
  • 修改操作

    • 时间复杂度:O(n)
    • 原因:元组是不可变的,修改元素需要创建一个新的元组。

3. set(集合)

  • 查找操作(如 in__contains__()):

    • 时间复杂度:O(1)
    • 原因:集合使用哈希表实现,查找操作是常数时间。
  • 插入操作(如 add()):

    • 时间复杂度:O(1)
    • 原因:哈希表的插入是常数时间。
  • 删除操作(如 remove()discard()):

    • 时间复杂度:O(1)
    • 原因:哈希表的删除是常数时间,discard() 不会抛出错误。
  • 修改操作

    • 时间复杂度:O(n)
    • 原因:集合中的元素是不可修改的,只能通过删除和插入来更改。

4. dict(字典)

  • 查找操作(如 inget()):

    • 时间复杂度:O(1)
    • 原因:字典使用哈希表实现,查找操作是常数时间。
  • 插入操作(如 update()key = value):

    • 时间复杂度:O(1)
    • 原因:哈希表的插入是常数时间。
  • 删除操作(如 delpop()):

    • 时间复杂度:O(1)
    • 原因:哈希表的删除是常数时间。
  • 修改操作(如 dict[key] = value):

    • 时间复杂度:O(1)
    • 原因:通过键值修改字典中的元素是常数时间。

总结

数据结构 查找操作 插入操作 删除操作 修改操作
list O(n) append(): O(1), insert(): O(n) remove(): O(n), pop(): O(1) O(1)(根据索引)
tuple O(n) O(n) O(n) O(n)
set O(1) O(1) O(1) O(n)
dict O(1) O(1) O(1) O(1)

操作总结

  • list 是一个可变的序列,可以高效地进行修改(O(1)),但插入和删除操作在中间位置时时间复杂度较高(O(n))。
  • tuple 是不可变的,修改、插入和删除操作的时间复杂度较高,通常需要创建一个新的元组。
  • setdict 是基于哈希表实现的,查找、插入和删除操作都非常高效(O(1)),但修改操作的灵活性较低,因为元素不能直接修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Alexander ——2024年报

Alexander ——2024年报Alexander ——2024年报 小总结 知己知彼,百战不殆。2024下半年找到了自己学习的方向,也认识很多的师傅,深入领域学习,无时不刻不在CTF的路上,逐渐建立一个完整的知识库体系。 今年的成长变化与进步 所学习的知识 Misc大部分编码体制皮亚诺夫曲线,希伯…

2025 多校冲刺省选模拟赛 1

第一次!输输输!2025 多校冲刺省选模拟赛 1 切割蛋糕(cake) 签到题 本质上是求 \(a\) 序列最小满足所有前缀平均值均大于全局平均值的循环位移,考虑 Raney 引理,找到斜率 \(\dfrac{s}{n}\) 所经过截距最小的点,易知没有无解情况。 时间复杂度 \(O(n)\)。 游乐园(park) …

IntelliJ IDEA 2024 安装激活详细使用教程(激活至2026,实测是永久,亲测!)

开发工具推荐:IntelliJ IDEA 2024 安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程 IntelliJ IDEA补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 !卸载老版本 IDEA 首先,如果小伙伴的…

文件及文件夹的对比工具:Beyond Compare v5.0修改版(无需手动激活)

前言 Beyond Compare是一款文件及文件夹(目录)的对比工具。Beyond Compare不仅可以快速比较出两个目录的不同,还可以比较每个文件的内容,而且可以任意显示比较结果。Beyond Compare程序内建了文件浏览器,方便您对文件、文件夹、压缩包、FTP网站之间的差异比对以及资料同步…

LGV 引理

无。LGV 引理 概述 参考 OI Wiki Lindstrm–Gessel–Viennot lemma,即 LGV 引理,可以用来处理有向无环图上不相交路径计数等问题。 引理定义方阵 \(M\)。结论是: \[\det(M) = \sum_{S:A\to B} (-1)^{sgn(\sigma(S))} \prod_{i=1}^n \omega(S_i) \]其中 \(S:A\to B\) 表示不相…

【python复习随记】

缩进要对多行语句:使用反斜杠\ total = item_one + \item_two + \item_three在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \ total = [item_one, item_two, item_three,item_four, item_five]复数complex a+bj : a实部 b虚部 j虚数单位 字符串 (1)多行字符串:三引号( …

windows11连接蓝牙耳机声音差的解决方案

前期在使用Windows 10时,我的XM3通常是有Hands Free和正常输出两个通道的,走Hands Free通道则会触发通话模式,可以自己调整以适应不同的需求。 但是升级到Windows 11后,发现只剩下了一个耳机输出通道,但是音质直接降为通话音质,多次升降级无果,调整音质选项也没有作用。…

【政策解读】《电力监控系统安全防护规定》今日施行!

《电力监控系统安全防护规定》旨在提升电力监控系统的安全性和可靠性,确保电力系统的安全稳定运行。今日起施行,主要内容: 1、总则:《电力监控系统安全防护规定》旨在强化电力监控系统安全防护,保障电力系统安全稳定运行。规定适用于中国境内的电力监控系统运营者及相关单…

同硕计算机专业考研必备:统考+课程学习资料大放送!

同硕计算机,统考,课程学习,源码资料考研之路,道阻且长。对于计算机专业的学子来说,备考之路更是充满挑战。为了帮助广大考生高效备战,我在此精心整理了一套同硕计算机专业统考及课程学习资料,并免费分享给大家! 一、资料亮点:1. 同硕-计算机专业-统考历年真题,全部免…

【有源码】医院挂号系统+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:医院挂号系统。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 管理后台-截图 前端-截图视频演示 https://githubs.xyz/show/329.mp4二. 系统概述 【…

基于图像形态学处理和凸包分析法的指尖检测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)测试样本1: 测试样本2: 测试样本3: 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)%提取手部轮廓坐标 handxy=func_find_hand_pxy(Im0_bw,Im0,Im0edge);figure; imshow(Im0); t…

云锵投资 2024 年收益统计及 12 月简报

年度统计量化基金小幅度跑输业绩基准; 量化股票由于平均1.8倍杠杆,加上有一定超额,所以最终跑出了 24.54%; 今年我个人在2月底部时加仓比较多,所以持股数增加了近一半; 由于有股指期货的持仓,权益类资产的整体杠杆较高,所以权益类资产今年获取60.12%的收益。 季报摘要行…