Python性能优化的小细节
来源:互联网 发布:飞秋mac 编辑:程序博客网 时间:2024/05/16 05:49
下面是 Python 性能快速优化的第二部分。
- 使用 Map ,Reduce 和 Filter 代替
for 循环
- 校验
a in b
, 字典 或 set 比 列表 或 元组 更好- 当数据量大的时候,尽可能使用不可变数据类型,他们更快 元组 > 列表
- 在一个列表中插入数据的复杂度为 O(n)
- 如果你需要操作列表的两端,使用
deque
- del – 删除对象使用如下1) python 自己处理它,但确保使用了
gc
模块2) 编写__del__
函数3) 最简单的方式,使用后调用del
一.查找的时候,特别是对大文件(大数据)进行查找的时候,用dictionary替代list#-*-coding:utf-8-*-from time import timet = time()list = ['a','b','is','python','jason','hello','hill','with','phone','test','dfdf','apple','pddf','ind','basic','none','baecr','var','bana','dd','wrd']list = dict.fromkeys(list,True)print listfilter = []for i in range (1000000): for find in ['is','hat','new','list','old','.']: if find not in list: filter.append(find)print "total run time:"print time()-t#2.53629994392#1.38068699837'''
Python 字典中使用了hash table,因此查找操作的复杂度为 O(1),而 list 实际是个数组,在 list 中,查找需要遍历整个 list,其复杂度为 O(n),
因此对成员的查找访问等操作字典要比 list 更快。
'''
二.涉及到list的交集或者求差等操作的时候,用set替代list
''from time import timet = time()lista=[1,2,3,4,5,6,7,8,9,13,34,53,42,44]listb=[2,4,6,9,23]intersection=[]for i in range (1000000): list(set(lista)&set(listb))print "total run time:"print time()-tfrom time import time'''t = time()lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 34, 53, 42, 44]listb = [2, 4, 6, 9, 23]intersection = []for i in range(1000000): for a in lista: for b in listb: if a == b: intersection.append(a)print "total run time:"print time() - t用时比较如下所示:#6.26855993271#1.63295388222
语法 操作 说明 set(list1) | set(list2)union包含 list1 和 list2 所有数据的新集合set(list1) & set(list2)intersection包含 list1 和 list2 中共同元素的新集合set(list1) - set(list2)difference在 list1 中出现但不在 list2 中出现的元素的集合
阅读全文
0 0
- Python性能优化的小细节
- 一个小项目中的Python中的性能优化细节——(下)其他的小细节,减少调用、if判断的顺序
- [Android 性能优化系列]那些不能忽略的小细节
- [Android 性能优化系列]那些不能忽略的小细节
- 性能优化-那些不能忽略的小细节
- 前端性能优化,前端开发注意的小细节
- 一个小项目中的Python中的性能优化细节——(上)从排序说起
- Python性能优化小建议
- Android小知识——关于Android内存、性能优化的一些细节
- java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- JAVA性能优化:35个小细节让你提升java代码的运行效率
- java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- 优化Python程序性能的15个小技巧
- 谈谈代码性能优化中的一些小细节
- java几个常用的性能优化细节
- python的性能优化
- php优化的小细节2
- 优化内存的一些小细节
- 2.HTTP中get和post的区别
- 你动过删网站源代码的念头吗?
- 年度总结-Grow up!
- 看完这篇,你就懂了Android的消息机制,整理思路,让我们开始吧
- MSTP基本概念
- Python性能优化的小细节
- 分享一个固定表头的CSS样式写法,主要实现效果为,表头不动,内容滚动
- ArrayList 与 string、string[] 的转换
- CDQ分治与整体二分小结
- 最小树形图 Command Network POJ
- Async 和 Await
- Monte Carlo蒙特卡洛算法经验与UCB算法与UCT算法
- PLS-00907: cannot load library unit
- linux中文件权限代表的意义