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])等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,941评论 0 3
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,772评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 水石影像阅读 204评论 0 1
  • 今天来说说什么是“游戏引导师”? 游戏引导师——这是一个奇葩的职业 如果问:孩子有什么天性? 只怕最能得到支持的答...
    大梦2017阅读 1,459评论 0 1