Python减少循环层次和缩进的技巧分析


Posted in Python onMarch 15, 2016

本文实例分析了Python减少循环层次和缩进的技巧。分享给大家供大家参考,具体如下:

我们知道Python中冒号和缩进代表大括号,这样写已经可以节省很多代码行数,但是可以更优化,尽可能减少循环的层次和缩进,让代码看起来更简洁,逻辑更清楚。不仅Python语言如此,其他语言也一样。

Python减少循环层次和缩进的技巧分析

如图,是两段Python代码,前后两段要实现的功能是一样的,但是第二段明显可读性更好,逻辑更佳清晰。在很多循环嵌套的时候,其实可以用“逆向思维”,用continue跳出不符合条件的循环,而不是成立的时候继续执行,这样只会不断加深循环的层次。

下面是图示中的Python代码:

"""优化前"""
for item in items:
 if is_for_sale(item):
 cost = compute_cost(item)
 if cost <= wallet.money:
  buy(item)
"""优化后"""
for item in items:
 if not is_for_sale(item):
 continue
 cost = compute_cost(item)
 if cost > wallet.money:
 continue
 buy(item)

这样做减少了循环嵌套的层次,使可读性和逻辑性更直观,也没有那么多缩进。

转自:小谈博客 http://www.tantengvip.com/2015/05/python-for-level/

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
pandas数据分组和聚合操作方法
Apr 11 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
Python创建临时文件和文件夹
Aug 05 Python
Python作用域用法实例详解
Mar 15 #Python
Python的净值数据接口调用示例分享
Mar 15 #Python
Python简单连接MongoDB数据库的方法
Mar 15 #Python
Python函数中的函数(闭包)用法实例
Mar 15 #Python
实例讲解Python中函数的调用与定义
Mar 14 #Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 #Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 #Python
You might like
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php session 检测和注销
2009/03/16 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
Array对象方法参考
2006/10/03 Javascript
Gird事件机制初级读本
2007/03/10 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python中new方法的详解
2019/01/15 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Python如何使用字符打印照片
2020/01/03 Python
Python爬虫教程知识点总结
2020/10/19 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
办公室主任职责范文
2013/11/08 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书