- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python少打字小技巧
Python少打字小技巧说明:增加代码的描述力,可以成倍减少你的LOC,做到简单,并且真切有力观点:少打字=多思考+少出错,10代码行比50行更能让人明白,以下技巧有助于提高5倍工作效率1. 交换变量值时避免使用临时变量:(cookbook1.1)老代码:我们经常很熟练于下面的代码temp = xx = yy = 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, 0for i in xrange(len(s)):?? ? if s? mval: mval, mpos = s, i新代码:mval, mpos = min([ (s, 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#不喜欢写下面代码if n = 0: print positiveelse: 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甚至提高了10倍的工作效率。下面的例子可以进一步说明:例子1:把文本的IP地址转化为整数说明:需要将类似192.168.10.214的IP地址转化为 0x0C0A80AD6,在不用 inet_aton情况下当C++/Java程序员正为如何进行文本分析,处理各种错误输入烦恼时,Python程序员已经下班:f = lambda ip: sum( [ int(k)*
您可能关注的文档
最近下载
- D-Z-T 0017-2023 工程地质钻探规程(正式版).docx VIP
- D-Z-T 0382-2021 固体矿产勘查地质填图规范(正式版).docx VIP
- [病人入院护理评估表1.doc VIP
- 具有抗菌性能的中熵合金、制备方法及其应用.pdf VIP
- 探析互联网技术在小学英语教学中的应用.docx VIP
- 科技英语的特征.pptx VIP
- 湖南省2026届高三九校联盟第一次联考 化学试卷(含答案详解).pdf
- 银川乐口福食品有限公司产品研发动因及对策研究----以蛋糕为例 经管类毕业论文.docx VIP
- 2023年ISO37001反贿赂管理体系内部审核全套资料.docx VIP
- 中国文化产业和旅游业年度研究报告(2024)精华版.pdf
文档评论(0)