本篇介绍Python for循环语句和range函数的使用,文中主要讨论for循环语句,Python的for循环语句类似于shell或是脚本语言中的foreach循环,可以迭代序列对象。使用range函数可以让Python的for循环提供类似于传统的for循环功能。通过本篇的学习,可以达成如下目标。
● 使用for循环语句迭代序列对象
● 掌握range函数的使用方法
Python提供的另外一个循环结构就是for循环语句,Python提供的for循环语句和Java、C++等编程语言提供的for语句不同,Python中的for循环更像是shell或是脚本语言中的foreach循环。它可以遍历如列表、元组、字符串等序列成员(列表、元组、字符串也称为序列),也可以用在列表解析和生成器表达式中。
1、 使用序列项迭代序列对象
通过for循环可以迭代序列对象的所有成员,并在迭代结束后,自动结束循环,其语法如下:
for iter_var in list:
语句块;
其中,iter_var是迭代变量,指向序列对象的元素,list是可迭代对象。语句块是循环体,在循环体中可以使用iter_var访问可迭代对象的元素。
例1:使用Pyhton列表建立一个同学花名册,使用for循环迭代输出花名册内容。
程序初始化一个Python列表,列表中存储姓名,然后使用for循环语句遍历Python列表,获取列表中的每个元素并输出。程序流程图如下:
图1 例1流程图
流程图用到了for循环控制,迭代花名册列表,并输出列表元素,迭代结束后自动退出循环,程序结束。
下面根据图1所示的流程图给出例1程序代码。
在for语句的每次循环中,item变量被设置为student列表的当前元素,被print语句使用。
例1输出结果如下图所示。
当用for循环迭代字符串时,迭代变量只会包含单个字符。遍历字符串序列的功能并不常用,在字符串里查找字符时,更常用的是用in操作符来判断一个子串或单个字符是否属于某个字符串。
例2:输出一个字符串的所有字母序列。
程序初始化一个字符串,然后使用for循环语句遍历这个字符串,获取字符串中的单个字符,并用print语句输出。流程图与列1相似,这里不再绘制流程图。程序代码如下:
例2输出结果如下图所示。
2、 使用序列索引迭代序列对象
例1中使用序列项迭代列表对象,for循环中的in子句会判断当前序列项是否在序列中,如果属于列表则继续循环,否则退出循环。在for循环语句中,也可以使用序列索引来迭代列表。使用序列索引迭代序列对象的语法如下:
for index in range(len(list)):
语句块;
其中,index为序列的索引项,range是一个计数函数,后面会详解解释,len获取序列对象的长度。
例1使用序列索引遍历列表代码如下:
使用range函数可以得到用来迭代index的索引数列表,使用序列对象的访问运算符“[]”,就可以访问对应的序列对象。
3、使用枚举函数迭代序列对象
枚举函数enumerate()用于将序列对象转换为一个索引序列,并返回序列对象的索引和成员,一般在for循环中得到序列对象的索引计数和序列对象成员。使用枚举函数迭代序列对象的语法如下:
for index, iter_var in enumerate (list,start_index=0):
语句块;
其中,index为enumerate返回的索引计数,iter_var为与索引计数对应的序列对象成员,list为待遍历的序列对象,start_index为返回的起始索引计数,起始索引计数默认为0。
例1使用枚举函数遍历列表代码如下:
使用enumerate函数获取student的索引计数,索引计数从0开始,也可以指定起始索引计数。
索引计数从2开始,输出结果如下图所示。
4、 关于range函数
前面介绍的for循环是一种迭代的循环机制,和Java、C++等传统编程语言的for循环有所不同。那么,Python能不能提供类似于传统的for循环功能呢?实现循环从一个数字开始计数到另一个数字,一旦到达最后的数字或者某个条件不再满足就立刻退出循环。
Python提供的range函数可以让for循环实现上面的功能,可以让for循环从0到10计数,或者从10到100每次递增5。range函数的语法如下:
range(start, end, step=1)
range会返回一个整数序列,statr为整数序列的起始值,end为整数序列的结束值,在生成的整数序列中,不包含结束值。step为整数序列中递增的步长,默认为1。
例如:
输出结果如下图所示。
range(0,5)生成包含0、1、2、3、4的整数序列,Python会把生成的这个整数序列用于for循环语句,循环从0到5,不包括5,步长为1,循环次数为5。
range(10,30,5)生成包含10、15、20、25的整数序列,循环从10到25,不包括30,步长为5,循环次数为4。可以看出,当range用于for循环时,循环次数取决于range返回的整数序列的长度,每次循环的索引计数为整数序列的值。
例3:使用for循环求自然数的阶乘。
自然数的阶乘是所有小于及等于该自然数的积,求自然数k的阶乘,就是从1开始顺序乘以小于等于k的所有自然数,也包括k。程序可以通过range函数返回小于所求自然数的整数序列,然后迭代range函数返回的整数序列。程序代码如下:
课程小结
(1)Python提供的for循环语句和Java、C++等编程语言提供的for语句不同,Python中的for更像是shell或是脚本语言中的foreach循环。它可以遍历如列表、元组、字符串等序列成员(列表、元组、字符串也称为序列),也可以用在列表解析和生成器表达式中。
(2)Pyhton的for循环应用range函数可以实现传统的for循环功能,实现循环从一个数字开始计数到另一个数字,一旦到达最后的数字或者某个条件不再满足就立刻退出循环。