码迷,mamicode.com
首页 > 编程语言 > 详细

python条件及循环语句

时间:2015-05-18 18:59:36      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:python   if   for   while   

1、条件语句

2、循环语句

3、迭代器

4、列表解析

5、生成器表达式


1、条件语句

最简单的条件语句:

if expression:

     expr_true_suite

如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符andornot连接,expr_true_suite是代码块,expressiontrue时执行,代码块如果只有一行,上面的整个条件语句便可全部写到一行,但可读性差。

elifelse的条件语句:

if expression1:

     expr1_true_suite

elif expression2:

     expr2_true_suite

elif expressionN:

     exprN_true_suite

else:

     none_of_the_above_suite

如上,语法同其它语言的条件语句类似,elifelse是可选的。

条件表达式实现三元操作符:

C/C++中,三元操作符如下(E成立时执行X,否则执行Y)——

E ? X : Y

python模拟的三元操作符——

(E and [X] or [Y])[0]

python三元操作符的实现——

X if E else Y


2、循环语句

while循环:

while expression:

     suite_to_repeat

for循环:

for iter_var in iterable:

     suite_to_repeat

for循环访问可迭代对象iterable的所有元素,iter_var被设置为可迭代对象的当前元素。for循环可用于序列类型,包括字符串、列表及元组,也可用于迭代器类型,迭代器对象有一个next()方法,调用后返回下一个条目,所有条目迭代完成后,迭代器引发一个StopIteration异常告诉程序循环结束,for语句在内部调用next()并捕获异常。

breakcontinuepass

break语句结束当前循环,跳转到下条语句。continue语句终止当前循环,尝试下一次迭代。pass语句表示不做任何事情。

循环中的else

在循环中也可以有else,这与C/C++不同,else字句只在循环完成后执行,也就是说break语句会跳过else块。


3、迭代器

迭代器为类序列对象提供了一个类序列的接口,更巧妙的是,还可以迭代不是序列但表现出序列行为的对象,例如字典的key,一个文件的行等等。对一个对象调用iter()就可以得到它的迭代器,一个实现了__iter__()next()方法的类也可以作为迭代器使用。itertools是与迭代器相关的一个模块。


4、列表解析

先来看一下列表解析的语法:

[expr for iter_var in iterable if cond_expr]

这个语句的核心是for循环,它迭代iterable对象的所有条目,前面的expr应用于序列的每个成员,最后的结果是该表达式产生的列表,迭代变量并不需要是表达式的一部分。if语句是可选的,用来捕获满足条件表达式cond_expr的序列成员。

例如,如下计算序列成员的平方的lamda函数表达式——

map[lamda x: x ** 2, range(6)]

可替换为列表解析——

[x ** 2 for x in range(6)]

结果一样是——

[0, 1, 4, 9, 16, 25]


5、生成器表达式

生成器表达式是列表解析的一个扩展。列表解析的一个不足之处就是生成所有的数据,用以创建这个列表,这可能对有大量数据的迭代器有负面效应。而生成器表达式不真正创建数字列表,而是返回一个生成器,这个生成器每次计算出一个条目后,把这个条目yield出来,使用了延时计算,在使用内存上更有效。

生成器表达式语法如下:

(expr for iter_var in iterable if cond_expr)


python条件及循环语句

标签:python   if   for   while   

原文地址:http://blog.csdn.net/ieearth/article/details/45824151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!