python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
最近在coding的时候,写的代码中只有一层循环,却很耗时
,不明觉厉
。不知道是哪里出了问题,于是我就在每一行代码中都打印一下耗时,最终发现了这个罪魁祸首
。这里我只说明两个我遇到耗时的场景,当然还有很多其他的方法可能也是一样的,这里只是提供问题的思路!
说明:
这里比较耗时,是我在外层使用了循环,在循环内部调用了列表的remove()方法
、使用了if xxx in xx
判断等类似操作!
1 python列表的remove方法比较耗时原因
1、例如,下面的伪代码
- 首先是循环
- 然后通过remove删除字典对应value列表中的一个元素
就是在remove删除列表元素的过程,其实是相当对这个value列表进行循环,当循环到要删除的元素后,循环停止!
因此这段代码的时间复杂度就是<=O2<=O^2<=O2,几乎就等价于两层for循环,因此当第一层循环有80W,第二层有1w,这个循环就已经非常耗时了!
data = {'a': [], 'b': [], ...}
for key, value in data.items():value.remove('xxx')
2、判断if xxx in xx条件比较耗时问题
1、例如,如下的伪代码
data = {'a': [], 'b': [], ...}
for key, value in data.items():if xxx in xx
如果判断元素xxx是否在xx中,加入这个xx是一个列表,其实在判断的过程中,也是类似先对列表进行循环,让元素xxx和列表中的xx每个元素做对比,如果提前比对到就停止循环,和上面的remove()方法都是类似的,因此也会比较耗时!
因此,在写代码的时候一定想办法让代码更简洁,同时保证高效性
!
python的列表的remove()方法、判断if xxx in xx条件比较耗时问题相关推荐
- python remove函数_Python列表的remove方法的注意事项
为何没有删除列表中的全部元素? 解释: 按照执行顺序,第一个空格被删除之后,后面的元素会前移(变成['空格','空格','12','23']),指针下一次会指向新列表的第二个元素(即初始状态的第三个空 ...
- python中列表的sort方法_python中列表的sort方法使用详解
内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...
- python实现列表的排序方法
本篇文章里小编给大家分享了关于python实现列表的排序方法以及相关知识点,有兴趣的朋友们可以学习下. 这次代码主要是实现列表的排序,使用sort函数实现,sort函数是对列表中的元素按照特定顺序进行 ...
- python语言remove_慎用python的pop和remove方法
申明:转载请注明出处!!! Python关于删除list中的某个元素,一般有两种方法,pop()和remove(). 如果删除单个元素,使用基本没有什么问题,具体如下. 1.pop()方法,传递的是待 ...
- python extend_Python 列表 extend() 使用方法及示例
Python 列表 extend() 使用方法及示例 将指定的列表元素(或任何可迭代的元素)添加到当前列表的末尾,extend()扩展了列表. extend()方法的语法为:list1.extend( ...
- Python中列表的copy方法
首先感谢,资料由网上的查询共享并保存下来的,该资料完全是用来学习,希望大家有用. 1.在列表中存在一个名为copy的方法,就像字面意思一样copy方法是用于复制列表元素的,示例如下: 1 names ...
- python中列表的一些方法
# 列表的方法有8个 # 分三类,1.插人,2.删除 3.其他 # 一.插人 # 1.s.append(x) # 2.s.insert(i,x) # 3.s.extend(s1)# 二.删除 # 4. ...
- Python 的列表的一些方法
list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表中出现的次数 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用 ...
- Python中列表的排序方法
一.sort()排序方法 # 这个方法会改变a自身 a = [7,5,9,3] # True为逆序,False为正序 a.sort(reverse = False) print(a) a.sort(r ...
最新文章
- Qt编译PX4源码,参考如下进行配置
- ACMNO.41C语言-数字调序 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数
- 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)
- 【摩天好课推荐】传统企业数字化转型的困惑、思考与实践
- 区块链创业的成功范式,人工智能不得不学
- Python 环境搭建,开发工具,基本语法
- 注册中心—组件—ZooKeeper
- python为什么那么多人点赞_python为何会火遍全球?它究竟是什么呢?阿里大佬告诉你答案...
- I/O操作不占用CPU的任何线程
- MongoDB实战经验分享
- cad加载tiff影像插件_ENVI影像规则裁剪
- 二阶振荡环节的谐振频率_什么是谐振器?谐振器与振荡器有什么区别?
- js基础-19-判断图片加载完成的方法
- 微星刀锋 无法进入bios_微星MPG X570 GAMING EDGE WIFI刀锋板主板BIOS设置u盘启动教程...
- 萤石云 android,Android-再次解读萤石云视频
- python怎么用拼音-用Python写一个拼音输入法
- 软件工程-第三章 软件需求分析1
- 免费的NBA历史得分榜接口
- 开发小程序需要服务器吗?小程序服务器配置要求
- 如何解决非标自动化设备制造企业管理难题?ERP管理系统推荐