简单的使用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])等。