Python中在for循环中嵌套使用if和else语句的技巧
来源:互联网 发布:在线网络理财规划 编辑:程序博客网 时间:2024/06/05 14:16
转自:http://www.jb51.net/article/86987.htm
for...[if]...构建List (List comprehension)
1.简单的for...[if]...语句
Python中,for...[if]...语句一种简洁的构建List的方法,从for给定的List中选择出满足if条件的元素组成新的List,其中if是可以省略的。下面举几个简单的例子进行说明。
省略if后,newList构建了一个与a具有相同元素的List。但是,newList和a是不同的List。执行b=a,b和newList是不同的。newList2是从a中选取满足x%2==0的元素组成的List。如果不使用for...[if]..语句,构建newList2需要下面的操作。
显然,使用for...[if]...语句更简洁一些。
2.嵌套的for...[if]...语句
嵌套的for...[if]...语句可以从多个List中选择满足if条件的元素组成新的List。下面也举几个例子。
嵌套的for...[if]...语句与多重for语句相当,最前面的for语句是最外层的循环。
善用python的else子句
在日常coding中,分支语句的使用非常普遍,经常会根据是否满足一定的条件对代码执行的逻辑进行一些控制,所以大家对if[elif[else]]一定不会陌生。分支语句中的else子句在其它的条件不满足的时候会被执行到,适当的使用分支语句能够让我们的代码逻辑更加的丰富。
在分支语句中使用else子句在一些常见的编程语言中的用法基本相同,类似于提供了一条默认的执行路径,配合if等条件判断语句使用,相比其它的编程语言(c#, java, js等)在python中,else有一些特殊的用法,配合for, while等循环语句使用,甚至还能配合异常处理try except语句进行使用,能够让我们的代码更加的简洁。
1.配合for/while循环语句使用
在for循环语句的后面紧接着else子句,在循环正常结束的时候(非return或者break等提前退出的情况下),else子句的逻辑就会被执行到。先来看一个例子:
结果:
一个简单打印素数的例子,判断某个数字是否是素数的时候需要遍历比它自己小的整数,任何一个满足整除的情况则判断结束,否则打印这是一个素数的info,有了else的加持,整个例子的逻辑相当的“self-expressive”,如同伪代码一般的好理解而且相比在判断整除的时候设置标志值然后在函数的结尾处判断标志值决定是否打印数字时素数的消息,代码更简洁没有那么多要描述如何做的“过程式”准备工作。
ps: 大家可以把例子中的被注释代码运行对比下效果。
2.配合 try except错误控制使用
在异常处理语句中,else有相似的用法,当try代码块没有抛出任何的异常时,else语句块会被执行到。
如打印日志所示,在转换成功未发生错的的时候,else语句里的逻辑会被执行,当然这个例子可能并没有什么太多的实际的用处,但大致能说明else在错误处理中的用处:简化逻辑,避免使用一些标志值就能够准确把握是否发生错误的情况来做一些实际的操作(比如在保存数据的时候如果发生错误,在else语句块中进行rollback的操作,然后紧接着还能加上finally语句完成一些清理操作。
善用else语句块能够让我们编写出更加简明,更加接近自然语言的语义的代码,当然也会更加的pythonic,细微之处大家可以慢慢体会。
- Python中在for循环中嵌套使用if和else语句的技巧
- Python中for循环和if判断语句的使用
- Java中条件语句和if-else的嵌套原则
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- 如何在代码中减少if else语句的使用
- python else在for、while、try 语句中使用
- Java中利用设计模式来代替复杂的if...else...语句(三层以上的嵌套循环)
- js在if else语句中var的变量在条件语句外可以使用吗?
- struts2中iterator标签的嵌套使用(if/else)
- struts2中iterator标签的嵌套使用(if/else)
- .net中if和else的使用
- 嵌套的if-else语句
- if..else语句的嵌套
- Python中if-else语句的多种写法
- Python中if-else语句的多种写法
- Python中if-else语句的多种写法
- Python中if-else语句的多种写法
- 在llvm中完成if else语句的编译
- 基于hadoop2.6.0搭建5个节点的分布式集群
- 数据库SQL优化大总结之 百万级数据库优化方案
- 数据库的事务处理
- IPC跨进程交互(4)Binder池的使用
- 多线程高并发单例模式
- Python中在for循环中嵌套使用if和else语句的技巧
- 《Spring Boot官方文档》开始Spring Boot
- 字典树(Trie)的简单实现
- 2.Oracle:Oracle中dual表的用途介绍(转载)
- 介绍一个不用重启tomcat完成地址映射的方法
- 《linux内核完全剖析》笔记02-中断处理
- HDU5713 K个联通块
- JAVA自学笔记
- Docker常用命令