从C#到Python:2 运算符、表达式和流程控制
2010-09-30 22:36:47 来源:WEB开发网最后说明一点,Python的try也支持else语句。如果有一些代码要在try没有发生异常的情况下才执行,就可以把它放到else中(这一点与finally不同,finally分支无论如何都会被执行)。
关于异常处理我们就简单介绍到这里,若需了解更多关于Python异常处理类、内建异常类型、自定义异常等内容,可以参考《Python精要参考(第二版)》。
2.3 列表内涵
列表内涵(List Comprehensions,也译作“列表推导式”)是Python最强有力的语法之一,常用于从集合对象中有选择地获取并计算元素,虽然多数情况下可以使用for、if等语句组合完成同样的任务,但列表内涵书写的代码更简洁(当然有时可能会不易读)。
列表内涵的一般形式如下,我们可以把[]内的列表内涵写为一行,也可以写为多行(一般来说多行更易读)。
[表达式 for item1 in 序列1 ... for itemN in 序列N if 条件表达式]
上面的表达式分为三部分,最左边是生成每个元素的表达式,然后是for 迭代过程,最右边可以设定一个if 判断作为过滤条件。
列表内涵的一个著名例子是生成九九乘法表:
s = [(x, y, x*y) for x in range(1, 10) for y in range(1,10) if x>=y]
列表内涵可能放在函数编程一章更合适,因为它可以统一实现map和filter等高阶函数(下一章介绍)。不过我还是倾向于将它看为一种组合的流程控制语句,而且我个人感觉它与C#中的LINQ有点神似(当然LINQ更强大,可以处理数据库和XML)。下面是两个例子,一个用LINQ实现,一个用 Python的列表内涵实现。
1 //C#中用LINQ找出10以内的偶数
2 var s = from x in Enumerable.Range(0, 10) where x % 2 == 0 select x;
更多精彩
赞助商链接