了解Python控制流语句——for 循环
for
循环
Python教程中for...in
语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),意即它会遍历序列中的每一个项目。我们将在后面的Python序列(Sequences)章节中了解有关它的更多内容。现在你所需要的就是所谓队列就是一系列项目的有序集合。
案例(保存为 for.py
):
for i in range(1, 5): print(i) else: print('The for loop is over')
输出:
$ python for.py 1 2 3 4 The for loop is over
它是如何工作的
在这一程序中,我们打印了一个数字序列。我们通过内置的 range
函数生成这一数字序列。有哪些Python内置函数
在这里我们所要做的事情是提供两个数字,而 range
将会返回一个数字序列,从第一个数字开始,至第二个数字结束。举个例子,range(1,5)
将输出序列 [1, 2, 3, 4]
。在默认情况下,range
将会以 1 逐步递增。如果我们向 range
提供第三个数字,则这个数字将成为逐步递增的加数。同样举个例子来说明,range(1,5,2)
将会输出 [1, 3]
。要记住这一序列扩展直到第二个数字,也就是说,它不会包括第二个数字在内。
另外需要注意的是,range()
每次只会生成一个数字,如果你希望获得完整的数字列表,要在使用 range()
时调用 list()
。例如下面这样:list(range(5))
,它将会返回 [0, 1, 2, 3, 4]
。有关列表的详细解释将会在 《数据结构》一章呈现。
然后 for
循环就会在这一范围内展开递归——for i in range(1,5)
等价于 for i in [1, 2, 3, 4]
,这个操作将依次将队列里的每个数字(或是对象)分配给 i
,一次一个,然后以每个 i
的值执行语句块。在本例中,我们这一语句块所做的就是打印出这些值。
同样要记住,else
部分是可选的。当循环中包含他时,它总会在python for
循环结束后开始执行,除非程序遇到了 break 语句。
另一个需要注意的地方是 for...in
能在任何队列中工作。在这里,我们有的是通过内置的 range
函数生成的一串数字列表,但总体来说我们可以包含任何类型对象的队列!我们将会在后面的章节详细解释这一观念。
针对 C/C++/Java/C# 程序员的提示
Python 中的
for
循环和 C/C++ 中的for
循环可以说是完全不同。C# 程序员会注意到 Python 中的for
循环与 C# 中的foreach
循环相似。Java 程序员则会注意到它同样与 Java 1.5 中的for (int i : IntArray)
无甚区别。在 C/C++ 中,如果你希望编写
for (int i = 0; i < 5; i++)
,那么在 Python 你只需要写下for i in range(0,5)
。正如你所看到的,Python 中的for
循环将更加简单,更具表现力且更不容易出错。