Python偷懒小技巧-提高10倍工作效率
说明:增加代码的描述力,可以成倍减少你的LOC,做到简单,并且真切有力
观点:少打字=多思考+少出错,10代码行比50行更能让人明白,以下技巧有助于提高10倍工作效率
1. 交换变量值时避免使用临时变量:(cookbook1.1)
老代码:我们经常很熟练于下面的代码
temp = x
x = y
y = temp
代码一:
u, v, w = w, v, u
有人提出可以利用赋值顺序来简化上面的三行代码成一行
代码二:
u, v = v, u
其实利用Python元组赋值的概念,可更简明 – 元组初始化 + 元组赋值
2. 读字典时避免判断键值是否存在:(cookbook1.2)
d = { 'key': 'value' }
老代码:
if 'key' in d:print (d['key'])
else: print ('not find')
新代码:
print (d.get('key', 'not find'))
3. 寻找最小值和位置的代码优化:
s = [ 4,1,8,3 ]
老代码:
mval, mpos = MAX, 0
for i in xrange(len(s)):if s[i] < mval: mval, mpos = s[i], i
新代码:
mval, mpos = min([ (s[i], i) for i in xrange(len(s)) ])
元组比较的特性,可以方便的写做一行
观点一:用Python编程,需要有“一字千金”的感觉;既然选择了Python,就不要在意单条语句的效率。
上面几点例子很基础,实际中将原始代码压缩1/5并不是不可能,我们之前一个子项目,C++代码270K
重构后Python代码只有67K,当然使用python的日志模块(logging),读写表格文本(csv)等,也功
不可末,最终代码变成原来的1/4,我觉得自己的寿命延长了三倍。。。下面优化几个常用代码:
4. 文件读取工作的最简单表达:
老代码:我们需要将文本文件读入到内存中
line = ''
fp = open('text.txt', 'r')
for line in fp: text += line
代码一:
text = string.join([ line for line in open('text.txt')], '']
代码二:
text = ''.join([ line for line in open('text.txt')])
代码三:
text = file('text.txt').read()
新版本的Python可以让你写出比1,2漂亮的代码(open是file的别名,这里file更直观)
5. 如何在Python实现三元式:
老代码:用惯C++,Java,C#不喜欢写下面代码
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
if n >= 0: print ('positive')
else: print ('negitive')
代码一:该技巧在 Lua里也很常见
print ((n >= 0) and 'positive' or 'negitive')
说明:这里的’and’和’or’相当于C中的’:‘和’?‘的作用,道理很简单,因为如果表达式为
真了那么后面的or被短路,取到’positive’;否则,and被短路,取到’negitive’
代码二:
print ((n >= 0 and ['positive'] or ['negitive])[0])
说明:将两个值组装成元组,即使’positive’是None, ‘’, 0 之类整句话都很安全
代码三:
print (('negitive', 'positive')[n >= 0])
说明:(FalseValue, TrueValue)[Condition] 是利用了 元组访问 + True=1 两条原理
6. 避免字典成员是复杂对象的初始化:(cookbook1.5)
老代码:
if not y in d: d[y] = { }d[y][x] = 3
新代码:
d.setdefault(y, { })[x] = 3
如果成员是列表的话也一样: d.setdefault(key, []).append(val)
上面六点技巧加以发挥,代码已经很紧凑了,但是还没有做到“没有一句废话”可能有人怀疑真的能
减少1/5的代码么??我要说的是1/5其实很保守,Thinking in C++的作者后来用了Python以后
觉得Python甚至提高了20倍的工作效率。
Python偷懒小技巧-提高10倍工作效率相关推荐
- bat实用代码_超实用的文件批量重命名,让你提高10倍工作效率!
日常工作中我们经常会遇到需要批量重命名文件的事儿,比如将网上下载的一堆毫无命名规律的图片按用途分类.比如将照相机里的大量活动照片按项目整理等. Windows系统中,一般在某个文件或文件夹上右键→重命 ...
- 使用计算机提高办公效率,掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用...
原标题:掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用 职场办公,你有没有羡慕过别人的工作效率?明明差不多的工作,但是有些人就能比你先完成.甚至你在加班的时候,别人早就下班回家玩耍了. ...
- 6 个工作中休息小技巧,让你工作效率翻倍!
本文转载自:Google 都在用的 6 个休息小技巧,让你工作效率翻倍 一. 大脑工作久了为什么要休息:为了恢复注意力和意志力 大家应该都有感受,工作久了会累,思想走神,效率就会降低. 研究表明,大脑 ...
- excel android 公式,两个超实用的Excel万能公式,瞬间提升你10倍工作效率!
相信大家在平时的工作中,都会经常有用到公式的需要,但是下面这些公式你用过吗,今天小编就带大家一起看看吧! 1. SUM函数 这个函数不仅在我们学习的过程中会用到,即便到了工作后,也经常需要对各种数据进 ...
- 独家 | 11个Python Pandas小技巧让你的工作更高效(附代码实例)
作者:Shiu-TangLi 翻译:吴振东 校对:王雨桐 本文约1800字,建议阅读6分钟. 本文为你介绍Pandas隐藏的炫酷小技巧,我相信这些会对你有所帮助. 或许本文中的某些命令你早已知晓,只是 ...
- Google 都在用的 6 个休息小技巧,让你工作效率翻倍
以前上学时,每节课 40 - 50 分钟,然后会休息 10 分钟. 工作后,没有了约束,自己平时忙碌一段时间,也会刷下朋友圈,看个小视频休息一下,我管这叫做劳逸结合,能提高工作效率. 但是,我最近读到 ...
- 适合pythonpandas的软件_11个Python Pandas小技巧让你的工作更高效(附代码实例)
本文为你介绍Pandas隐藏的炫酷小技巧,我相信这些会对你有所帮助. 或许本文中的某些命令你早已知晓,只是没意识到它还有这种打开方式. Pandas是一个在Python中广泛应用的数据分析包.市面上有 ...
- 智能自动化输送分拣集成设备|快递自动分拣设备厂家告诉您如何提高10倍分拣效率
企业要想高效率.低成本地履行订单,一套自动化.智能化的仓储系统显得尤为重要,这就对物流机器人的应用提出强烈需求.基于机器人的"货到人"方案可以完成补货.整箱拣货.拆零拣选.退货等物 ...
- 5个Excel常用小技巧,分分钟提升工作效率
点赞再看,养成习惯:十年之计,莫如树木. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...
最新文章
- 零基础如何选择适合的Java培训课程
- 成功解决CondaError: Error reading file, file should be a text file containing packages conda create --he
- Github上排名前五的开源网络监控工具
- CF16A Flag
- 监控开发之用munin来自定义插件监控redis和mongodb
- (05)vtk通过多边形构建矩形,并拉伸成立方体,两个立方体独立操作
- udp聊天?使用udp+python实现多人聊天室
- 从零开始的异世界生活(前缀和)
- 如何用Keil uVision3和ISIS 7 Professional中C51单片机做出 LED流水灯
- 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
- servlet容器,web容器,spring容器,springmvc容器,dubbo容器之间区别
- MATLAB在主成分分析中的应用
- 移动边缘计算将如何实现元宇宙?
- 抓握手包破解wifi密码前传:WPA/WPA2加密小结
- 使用LODOP设计打印模板
- Win实用 优秀 软件清单推荐
- JZOJ5939. 【NOIP2018模拟10.30】阻击计划
- AT2401C完美替代RFX2401C性价比更高
- [深度学习项目] - 时间序列预测 (5)[待补充]
- Http协议之Referer
热门文章
- 基于以太坊的去中心化宠物商店构建教程
- 防火墙启动被拒绝解决方案
- [面试专题]Web缓存详解
- 腾讯下载的视频转换为MP4
- MariaDB/MySql 服务消失无法启动
- iOS:多线程的详细介绍
- MyEclipse将Java项目打包成jar文件的三种方法
- 错误: libstdc++.so.6: cannot open shared object file: No such file or directory
- tomcat服务器介绍之二 、session服务器实现方法
- HDU 1618 Oulipo KMP解决问题的方法