美文网首页语言PythonPythoner集中营
Python里的循环与迭代函数(下)

Python里的循环与迭代函数(下)

作者: 東飛 | 来源:发表于2017-04-12 17:40 被阅读109次

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 子句将被跳过。

相关文章

网友评论

    本文标题:Python里的循环与迭代函数(下)

    本文链接:https://www.haomeiwen.com/subject/exymattx.html