没有合适的资源?快使用搜索试试~ 我知道了~
做到这二十条,Python程序性能轻松翻倍!1
需积分: 0 0 下载量 92 浏览量
2022-08-03
17:59:25
上传
评论
收藏 514KB PDF 举报
温馨提示
试读
17页
1.优化算法时间复杂度 2. 减少冗余数据 3. 合理使用copy与deepcopy 4. 使用dict或set查找元素 5. 合理使用生成器(generato
资源详情
资源评论
资源推荐
做
到
这
二
十
条
,
Python
程
序
性
能
轻
松
翻
倍
!
程序猿
1.
优
化
算
法
时
间
复
杂
度
算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间
复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。不同的场景有不同的优化方
式,总得来说,一般有分治,分支界限,贪心,动态规划等思想。
2.
减
少
冗
余
数
据
如用上三角或下三角的方式去保存一个大的对称矩阵。在0元素占大多数的矩阵里使用稀疏矩阵表
示。
3.
合
理
使
用
copy
与
deepcopy
对于dict和list等数据结构的对象,直接赋值使用的是引用的方式。而有些情况下需要复制整个对
象,这时可以使用copy包里的copy和deepcopy,这两个函数的不同之处在于后者是递归复制的。效率
也不一样:(以下程序在ipython中运行)
import
copy
a=range(100000)
%timeit-n10copy.copy(a)# 运行10次 copy.copy(a)
%timeit-n10copy.deepcopy(a)
10loops,best of3:1.55ms per loop
10loops,best of3:151ms per loop
timeit后面的-n表示运行的次数,后两行对应的是两个timeit的输出,下同。由此可见后者慢一个数
量级。
4.
使
用
dict
或
set
查
找
元
素
python dict和set都是使用hash表来实现(类似c++11标准库中unordered_map),查找元素的时间复杂
度是O(1)
a=range(1000)
s=set(a)
d=dict((i,1)foriina)
%timeit-n10000100ind
%timeit-n10000100ins
10000loops,best of3:43.5ns per loop
10000loops,best of3:49.6ns per loop
dict的效率略高(占用的空间也多一些)。
5.
合
理
使
用生
成
器
(
generator
)
和
yield
%timeit-n100a=(iforiinrange(100000))
%timeit-n100b=[iforiinrange(100000)]
100loops,best of3:1.54ms per loop
100loops,best of3:4.56ms per loop
使用()得到的是一个generator对象,所需要的内存空间与列表的大小无关,所以效率会高一些。在
具体应用上,比如set(i for i in range(100000))会比set([i for i in range(100000)])快。但是
对于需要循环遍历的情况:
%timeit-n10forxin(iforiinrange(100000)):
pass
%timeit-n10forxin[iforiinrange(100000)]:
pass
10loops,best of3:6.51ms per loop
10loops,best of3:5.54ms per loop
剩余16页未读,继续阅读
查理捡钢镚
- 粉丝: 19
- 资源: 317
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
- 基于Java的JAVA项目分析工具设计源码 - JAVAProjectAnalysis
- top888.json
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0