Python中for循环详解
与其它大多数语言一样,Python 也拥有 for 循环。你到现在还未曾看到它们的唯一原因就是,Python 在其它太多的方面表现出色,通常你不需要它们。 其它大多数语言没有像 Python 一样的强大的 list 数据类型,所以你需要亲自做很多事情,指定开始,结束和步长,来定义一定范围的整数或字符或其它可重复的实体。但是在 Python 中,for 循环简单地在一个列表上循环,与 list 解析的工作方式相同。 1. for 循环介绍 复制代码 代码如下: >>> li = ['a','b','e'] >>> for s in li: (1) ... print s (2) a e >>> print "n".join(li) (3) a e (1) for 循环的语法同 list 解析相似。li 是一个 list,而 s 将从第一个元素开始依次接收每个元素的值。 要做一个 “通常的” (Visual Basic 标准的) 计数 for 循环也非常简单。 2. 简单计数 复制代码 代码如下: >>> for i in range(5): (1) ... print i 0 1 2 3 4 >>> li = ['a','c','d','e'] >>> for i in range(len(li)): (2) - 104 -Dive Into Python http://diveintopython.org/ ... print li[i] a c d e (1) range 生成一个整数的 list,通过它来控制循环。我知道它看上去有些奇怪,但是它对计数循环偶尔 (我只是说偶尔) 会有用 。 for 循环不仅仅用于简单计数。它们可以遍历任何类型的东西。下面的例子是一个用 for 循环遍历 dictionary 的例子。 3. 遍历 dictionary 复制代码 代码如下: >>> import os >>> for k,v in os.environ.items(): (1) (2) ... print "%s=%s" % (k,v) USERPROFILE=C:Documents and Settingsmpilgrim OS=Windows_NT COMPUTERNAME=MPILGRIM USERNAME=mpilgrim [...略...] >>> print "n".join(["%s=%s" % (k,v) ... for k,v in os.environ.items()]) (3) USERPROFILE=C:Documents and Settingsmpilgrim OS=Windows_NT COMPUTERNAME=MPILGRIM USERNAME=mpilgrim [...略...] (1) os.environ 是在你的系统上所定义的环境变量的 dictionary。在 Windows 下,这些变量是可以从 MS-DOS 访问的用户和系统变量。在 UNIX 下,它们是在你的 shell 启动脚本中所 export (输出) 的变量。在 Mac OS 中,没有环境变量的概念,所以这个 dictionary 为空。 现在我们来看看在 第 5 章介绍的样例程序 fileinfo.py 中 MP3FileInfo 的 for 循环 。 复制代码 代码如下: tagDataMap = {"title" : ( 3, 33,stripnulls), "artist" : ( 33, 63, "album" : ( 63, 93, "year" : ( 93, 97, "comment" : ( 97,126, "genre" : (127,128,ord)} (1) . . . if tagdata[:3] == "TAG": for tag,(start,end,parseFunc) in self.tagDataMap.items(): (2) self[tag] = parseFunc(tagdata[start:end]) (3) (1) tagDataMap 是一个类属性,它定义了我们正在一个 MP3 文件中搜索的标记。标记存储为定长字段,只要我们读出文件最后 128 个字节,那么第 3 到 32 字节总是歌曲的名字,33-62 总是歌手的名字,63-92 为专辑的名字,等等。请注意 tagDataMap 是一个 tuple 的 dictionary,每个 tuple 包含两个整数和一个函数引用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |