2.13 for循环和range()内建函数

Python中的for循环与传统的for循环(计数器循环)不太一样,它更像shell脚本里的foreach迭代。 Python中的for接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素。

2.13 for循环和range()内建函数 - 图1

上面例子的输出如果能在同一行就会美观许多。print语句默认会给每一行添加一个换行符。只要在print语句的最后添加一个逗号(,),就可以改变它这种行为。

2.13 for循环和range()内建函数 - 图2

上面的代码还添加了一个额外的没有任何参数的print语句,它用来输出一个换行符。否则,提示信息就会立刻出现在我们的输出之后。下面是以上代码的输出。

2.13 for循环和range()内建函数 - 图3

为了输出清晰美观,带逗号的print语句输出的元素之间会自动添加一个空格。通过指定输出格式,程序员可以最大程度地控制输出布局,也不用担心这些自动添加的空格。它也可以将所有数据放到一处输出——只需要将数据放在格式化操作符右侧的元组或字典中。

2.13 for循环和range()内建函数 - 图4

使用字符串格式操作符还允许我们做一些字符串输出之前的整理工作,就像你在刚才的例子中看到的一样。

通过演示一个让Python for循环更像传统循环(换言之,计数循环)的示例,我们来结束对循环的介绍。因为我们不能改变for循环的行为(迭代一个序列),我们可以生成一个数字序列。这样,尽管我们确实是在迭代一个序列,但是它至少展示的是递增计数的效果。

2.13 for循环和range()内建函数 - 图5

在这个循环中,eachNum包含的整型值可以用于显示,也可以用于计算。因为我们要使用的数值范围可能会经常变化,Python提供了一个range()内建函数来生成这种列表。它正好能满足我们的需要,接受一个数值范围,生成一个列表。

2.13 for循环和range()内建函数 - 图6

对字符串来说,很容易迭代每一个字符。

2.13 for循环和range()内建函数 - 图7

2.13 for循环和range()内建函数 - 图8

range()函数经常和len()函数一起用于字符串索引。在这里我们要显示每一个元素及其索引值。

2.13 for循环和range()内建函数 - 图9

不过,这些循环有一个约束,你要么循环索引,要么循环元素。这导致了enumerate()函数的推出 (Python2.3新增)。它同时做到了这两点。

2.13 for循环和range()内建函数 - 图10