python条件及循环语句
2015-05-18 16:34
323 查看
1、条件语句
2、循环语句
3、迭代器
4、列表解析
5、生成器表达式
1、条件语句
最简单的条件语句:
if expression:
expr_true_suite
如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符and、or和not连接,expr_true_suite是代码块,expression为true时执行,代码块如果只有一行,上面的整个条件语句便可全部写到一行,但可读性差。
带elif和else的条件语句:
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_above_suite
如上,语法同其它语言的条件语句类似,elif和else是可选的。
条件表达式实现三元操作符:
在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()并捕获异常。
break、continue、pass:
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)
显式调用next()会返回下一个值,结束时返回StopIteration异常,另外,我们还可以通过send()发送一个值给生成器,调用close()方法终结。
下面是一个例子generator.py:
下面是执行结果:
2、循环语句
3、迭代器
4、列表解析
5、生成器表达式
1、条件语句
最简单的条件语句:
if expression:
expr_true_suite
如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符and、or和not连接,expr_true_suite是代码块,expression为true时执行,代码块如果只有一行,上面的整个条件语句便可全部写到一行,但可读性差。
带elif和else的条件语句:
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_above_suite
如上,语法同其它语言的条件语句类似,elif和else是可选的。
条件表达式实现三元操作符:
在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()并捕获异常。
break、continue、pass:
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)
显式调用next()会返回下一个值,结束时返回StopIteration异常,另外,我们还可以通过send()发送一个值给生成器,调用close()方法终结。
下面是一个例子generator.py:
#!/usr/bin/env python def counter(start_at): count = start_at print "count = start_at", count while True: val = (yield count) print "val = (yield count)", val if val is not None: count = val print 'count = val', count else: count += 1 print 'count += 1', count
下面是执行结果:
>>> import generator >>> count = generator.counter(10) >>> count.next() count = start_at 10 10 >>> count.next() val = (yield count) None count += 1 11 11 >>> count.next() val = (yield count) None count += 1 12 12 >>> count.send(100) val = (yield count) 100 count = val 100 100 >>> count.next() val = (yield count) None count += 1 101 101 >>> count.close() >>> count.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
相关文章推荐
- Python的条件语句和循环
- python基础(3)--条件判断循环语句与列表解析,生成器
- Python入门(四)Python运算符、条件语句、循环语句
- python 循环语句的else语句用法,当循环条件变为假,切不是通过breakbreak终止的时候,就会执行这个else语句。
- python学习笔记——循环语句条件语句
- Python中条件选择和循环语句使用方法介绍
- Python 的条件语句和循环语句
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
- Python条件、循环和其他语句
- python基础教程_学习笔记7:条件、循环、其它语句
- Python 条件语句和循环
- Python学习(条件和循环语句)
- Python学习笔记-第五章 条件、循环和其他语句(下)
- python 学习笔记(2) 条件语句与循环语句
- Python条件、循环和其他语句
- Python学习笔记之条件、循环和其他语句
- Python中的条件判断语句与循环语句用法小结
- Python新手学习基础之条件语句——While循环
- 【python】第五章——条件、循环和其他语句
- Python之 If条件判断、While循环语句