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 相关文章推荐
Python中的ceil()方法使用教程
May 14 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
Python设计模式之策略模式实例详解
Jan 21 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
python scrapy爬虫代码及填坑
Aug 12 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
python 利用toapi库自动生成api
2020/10/19 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
入党积极分子介绍信
2014/01/17 职场文书
学习两会精神心得范文
2014/03/17 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers