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

简单的使用for和while语句实现循环

while循环

while语句反复执行循环体中的语句,直到相关表达式求值为假。

while expression:
    statements

for循环

for语句迭代s中的所有元素,直到再无可用元素。for语句适用于可支持迭代的对象(包括内置的序列类型,如列表,元组和字符串),也支持实现迭代器协议的对象。

for i in n:
    statements

如果对象s能以下面代码演示的方式使用,那它就支持迭代的。这段代码模拟了for循环的实现:

# -*- coding:utf-8 -*-
list=('one','two','three')
it =list.__iter__()     #获取list的迭代器
while True:
    try:
        print it.next()     #获得下一项(在Python 3中需使用__next__)
    except StopIteration:   #不再有可用项
        break

迭代变量

for i in s 语句中,变量i称为迭代变量。在循环的每次迭代中,它都会从s接受一个新值。迭代变量的作用域并非for语句私有。如果前面已经定义了一个相同名称的变量,它的值将被改写。另外,循环结束后迭代变量依然保留最后一个值。

多值迭代

如果迭代中使用的元素是元素大小完全一致的序列,可以使用下面这样的语句把它们的值解包到单独的迭代变量中:

tuple_list = [(), (), ()]
tuple_list[0] = ('title0', 'auhtor0', 'content0')
tuple_list[1] = ('title1', 'auhtor1', 'content1')
tuple_list[2] = ('title2', 'auhtor2', 'content2')

for x, y, z in tuple_list:
    print x, y, z

在这个例子中, s必须包含或能产生一些序列,每个序列包含3个元素。每次迭代时,会把相应序列的各个元素赋值给变量x,y,和z。s可以为任意类型的序列,包括列表,生成器和字符串。

enumerate()

循环时,除了数据值之外,有时还需要跟踪数字索引,例如:

# -*- coding:utf-8 -*-
list = ('one', 'two', 'three')
i = 1
for x in list:
    print '第%d个元素:%s' % (i, x)
    i += 1

Python提供了一个内置函数enumerate(),可以简化上面代码:

# -*- coding:utf-8 -*-
list = ('one', 'two', 'three')
for i,x in enumerate(list):
    print '第%d个元素:%s' % (i, x)

enumerate(s)创建了一个迭代器,其返回值就是一个元组的序列(0,s[0]),(1,s[1])(2,s[2]),(3,s[3])等。

    原文作者:東飛
    原文地址: https://www.jianshu.com/p/b3bd99ce6f8a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞