说明:增加代码的描述力,可以成倍减少你的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倍工作效率相关推荐

  1. bat实用代码_超实用的文件批量重命名,让你提高10倍工作效率!

    日常工作中我们经常会遇到需要批量重命名文件的事儿,比如将网上下载的一堆毫无命名规律的图片按用途分类.比如将照相机里的大量活动照片按项目整理等. Windows系统中,一般在某个文件或文件夹上右键→重命 ...

  2. 使用计算机提高办公效率,掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用...

    原标题:掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用 职场办公,你有没有羡慕过别人的工作效率?明明差不多的工作,但是有些人就能比你先完成.甚至你在加班的时候,别人早就下班回家玩耍了. ...

  3. 6 个工作中休息小技巧,让你工作效率翻倍!

    本文转载自:Google 都在用的 6 个休息小技巧,让你工作效率翻倍 一. 大脑工作久了为什么要休息:为了恢复注意力和意志力 大家应该都有感受,工作久了会累,思想走神,效率就会降低. 研究表明,大脑 ...

  4. excel android 公式,两个超实用的Excel万能公式,瞬间提升你10倍工作效率!

    相信大家在平时的工作中,都会经常有用到公式的需要,但是下面这些公式你用过吗,今天小编就带大家一起看看吧! 1. SUM函数 这个函数不仅在我们学习的过程中会用到,即便到了工作后,也经常需要对各种数据进 ...

  5. 独家 | 11个Python Pandas小技巧让你的工作更高效(附代码实例)

    作者:Shiu-TangLi 翻译:吴振东 校对:王雨桐 本文约1800字,建议阅读6分钟. 本文为你介绍Pandas隐藏的炫酷小技巧,我相信这些会对你有所帮助. 或许本文中的某些命令你早已知晓,只是 ...

  6. Google 都在用的 6 个休息小技巧,让你工作效率翻倍

    以前上学时,每节课 40 - 50 分钟,然后会休息 10 分钟. 工作后,没有了约束,自己平时忙碌一段时间,也会刷下朋友圈,看个小视频休息一下,我管这叫做劳逸结合,能提高工作效率. 但是,我最近读到 ...

  7. 适合pythonpandas的软件_11个Python Pandas小技巧让你的工作更高效(附代码实例)

    本文为你介绍Pandas隐藏的炫酷小技巧,我相信这些会对你有所帮助. 或许本文中的某些命令你早已知晓,只是没意识到它还有这种打开方式. Pandas是一个在Python中广泛应用的数据分析包.市面上有 ...

  8. 智能自动化输送分拣集成设备|快递自动分拣设备厂家告诉您如何提高10倍分拣效率

    企业要想高效率.低成本地履行订单,一套自动化.智能化的仓储系统显得尤为重要,这就对物流机器人的应用提出强烈需求.基于机器人的"货到人"方案可以完成补货.整箱拣货.拆零拣选.退货等物 ...

  9. 5个Excel常用小技巧,分分钟提升工作效率

    点赞再看,养成习惯:十年之计,莫如树木. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

最新文章

  1. 零基础如何选择适合的Java培训课程
  2. 成功解决CondaError: Error reading file, file should be a text file containing packages conda create --he
  3. Github上排名前五的开源网络监控工具
  4. CF16A Flag
  5. 监控开发之用munin来自定义插件监控redis和mongodb
  6. (05)vtk通过多边形构建矩形,并拉伸成立方体,两个立方体独立操作
  7. udp聊天?使用udp+python实现多人聊天室
  8. 从零开始的异世界生活(前缀和)
  9. 如何用Keil uVision3和ISIS 7 Professional中C51单片机做出 LED流水灯
  10. 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
  11. servlet容器,web容器,spring容器,springmvc容器,dubbo容器之间区别
  12. MATLAB在主成分分析中的应用
  13. 移动边缘计算将如何实现元宇宙?
  14. 抓握手包破解wifi密码前传:WPA/WPA2加密小结
  15. 使用LODOP设计打印模板
  16. Win实用 优秀 软件清单推荐
  17. JZOJ5939. 【NOIP2018模拟10.30】阻击计划
  18. AT2401C完美替代RFX2401C性价比更高
  19. [深度学习项目] - 时间序列预测 (5)[待补充]
  20. Http协议之Referer

热门文章

  1. 基于以太坊的去中心化宠物商店构建教程
  2. 防火墙启动被拒绝解决方案
  3. [面试专题]Web缓存详解
  4. 腾讯下载的视频转换为MP4
  5. MariaDB/MySql 服务消失无法启动
  6. iOS:多线程的详细介绍
  7. MyEclipse将Java项目打包成jar文件的三种方法
  8. 错误: libstdc++.so.6: cannot open shared object file: No such file or directory
  9. tomcat服务器介绍之二 、session服务器实现方法
  10. HDU 1618 Oulipo KMP解决问题的方法