条件语句:If – elif – else
ifexpression1:
expr1_true_suite
elifexpression2:
expr2_true_suite
……
elifexpressionN:
exprN_true_suite
else:
none_of_the_above_suite
条件表达式, 即三元操作符
C语言语法: C?X:Y 例: result= x<y? x: y
Python语法:X if C else Y result= x if x < y else y
while循环:
whileexpression:
suite_to_repeat
else:
final process # while循环结束后的操作。
for循环:
foriter_var in iterable:
suite_to_repeat
else:#for循环结束后的操作
=使用项和索引迭代===
两全其美的办法是使用内建的 enumerate() 函数, 代码如下:
>>>nameList = ['Donn', 'Shirley', 'Ben', 'Janice',
... 'David', 'Yen', 'Wendy']
>>>for i, eachLee in enumerate(nameList):
... print "%d %s Lee" % (i+1,eachLee)
break语句
Python中的break 语句可以结束当前循环然后跳转到下条语句, 类似C 中的传统break . 常用在当某个外部条件被触发(一般通过 if 语句检查), 需要立即从循环中退出时. break 语句可以用在 while 和 for 循环中. break语句触发后,while和for循环自带的else语句也被忽略。
continue语句
不管是 Python, C, Java 还是其它任何支持 continue 语句的结构化语言中, 一些初学者有这样的一个误解:continue 语句"立即启动循环的下一次迭代". 实际上,当遇到 continue 语句时, 程序会终止当前循环,并忽略剩余的语句, 然后回到循环的顶端. 在开始下一次迭代前,如果是条件循环, 我们将验证条件表达式.如果是迭代循环,我们将验证是否还有元素可以迭代. 只有在验证成功的情况下, 我们才会开始下一次迭代.
pass语句
Python提供了pass关键字做语句占位符,表示当前不做任何操作。相当于C语言的空大括号{}。
迭代器:
迭代器为容器对象提供了一个类似序列对象的接口,可以逐一访问容器对象中的元素。形式上迭代器就是实现了next()方法的容器对象。通过不断的调用next()方法遍历整个容器,直到返回StopIteration异常,说明遍历完成。
如何创建迭代器:
工厂方法:iter(obj) 将容器对象转化为迭代对象,例如:序列则根据索引从0开始转化为迭代对象.
iter(func, sentinel): 重复调用方法func生成值,直到生成的值为sentinel为止。
自定义迭代器: 实现了__iter__() 和next()方法的类都可以作为迭代器使用。
内建函数:
reverse():返回逆序的迭代器。
enumerate():
any()
all()
列表,元组,字典,文件(每一行是一个成员对象)都是迭代器。itertools 模块包含了各种有用的迭代器。
列表解析:
[expr for iter_var in iterable <if cond_expr>] # if子句是可选的。
生成器表达式:
它与列表解析非常相似,而且它们的基本语法基本相同; 不过它并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来.
(exprfor iter_var in iterable <if cond_expr>) # if子句是可选的。
列表解析语法用中括号[], 生成器表达式用小括号(),功能类似,只是列表解析需要的数据都会在内存中,而生成器表达式只有部分数据在内存中,对于需要一个巨大的列表数据时生成器表达式更适合一些。
生成器使用例子:
生成器表达式就好像是懒惰的列表解析(这反而成了它主要的优势). 它还可以用来处理其他列表或生成器, 例如这里的 rows 和 cols :
rows= [1, 2, 3, 17]
defcols(): # example of simple generator
yield 56
yield 2
yield 1
不需要创建新的列表, 直接就可以创建配对. 我们可以使用下面的生成器表达式:
x_product_pairs= ((i, j) for iin rows for j in cols()) #表达式中使用了两个循环。这两个循环之间是笛卡尔乘积的关系。
现在我们可以循环 x_product_pairs , 它会懒惰地循环 rows 和 cols :
>>>for pair in x_product_pairs:
... print pair
...
(1,56)
(1,2)
(1,1)
(2,56)
(2,2)
(2,1)
(3,56)
(3,2)
(3,1)
(17,56)
(17,2)
(17,1)