zip( ) 和 izip( )函数
当循环迭代两个以上的序列时,例如,写一个下面这样的循环,每次迭代获得不同序列中的元素:
# -*- coding:utf-8 -*-
title = ['one', 'two', 'three']
author = ['Jack', 'Carl', 'David']
i = 0
while i < len(title) and i < len(author):
x = title[i] # 获取title的一个元素
y = author[i] # 获取author的一个元素
print '第%d组title:%s,author:%s' % (i+1, x, y)
i += 1
使用zip()函数可以简化这段代码,例如:
# -*- coding:utf-8 -*-
title = ['one', 'two', 'three']
author = ['Jack', 'Carl', 'David']
i = 0
for x, y in zip(title, author):
print '第%d组title:%s,author:%s' % (i + 1, x, y)
i += 1
zip( s , t ) 将序列是 s 和 t 组合为一个元组序列 ( s[0] , t[0] )、( s[1] , t[1] )、( s[2] , t[2] )等,如果 s 和 t 的长度不等,则至用完长度最短的索引为止。使用zip( )函数时需要注意一点,即在Python 2 中,它会将的元素完全消耗尽,创建一个元组的列表。函数itertools.izip( )实现的效果与zip相同,但一次值生成一个元组,而不是创建一个元组列表。
break 语句
使用break语句可从循环体中跳出来。例如下面代码的功能是从文件中读取文本行,直到遇到空的文本行为止:
# -*- coding:utf-8 -*-
for line in open('test.txt', 'r'):
stripped = line.strip()
if not stripped:
break #遇到一个空行,停止读取
print(stripped)
continue 语句
使用continue语句可以跳到循环的下一个迭代(跳过循环体中的余下代码)。例如,如下代码跳过一个文件中的所有空行:
# -*- coding:utf-8 -*-
for line in open('test.txt','r'):
stripped=line.strip()
if not stripped:
continue #跳过空行
print stripped
break和continue语句仅应用于正在执行的最内层循环。如果需要跳出多层嵌套循环结构,可以使用异常。Python不提供 "goto" 语句。
else 语句
在循环结构中也可以加入 else 语句,例如:
# -*- coding:utf-8 -*-
for line in open('test.txt', 'r'):
stripped = line.strip()
if not stripped:
break
print stripped
else:
raise RuntimeError('Missing selection separator')
else 语句只在循环运行完成后才会执行。但是,如果先一步使用break语句中止了循环,else 子句将被跳过。