在我们学过的算法课程中,时常会提到迭代
一词。算法中的迭代,指已知一个初始值,再根据一定的规律进行计算,得到下一个值的过程。而在编程中,我们也经常用到它,那就是循环。
1、迭代
实例,遍历一个列表
L = ['jc','xf','xbz','xdg']
for i in L:
print(i,end='\t')
输出:jc xf xbz xdg
如上,我们循环打印了一个列表,这个过程,就叫做迭代。
简而言之,迭代就是循环遍历可迭代对象的过程。
2、可迭代对象
- 定义
在python中,迭代是通过for....in(可迭代对象)
来实现的,而在上面的例子中,我们使用for…in 遍历了一个列表,所以列表就是一个可迭代对象。即能使用for…in 来遍历的对象叫做可迭代对象。 - 如何判断一个对象是否是可迭代对象?
在不明确对象类型的时候,为了避免迭代报错,我们需要先判断是否是迭代对象,这可以借助Iterable模块实现。
from typing import Iterable
L = ['jc','xf','xbz','xdg']
print(isinstance(L,Iterable))
输出:True
isinstance: 判断一个对象是否是某个类的实例,是则返回True,否则返回 False。
3、迭代器
个人理解:能使用next(iterator)
依次取值的对象。
-
使用流程
(1) 使用iter(iterable/可迭代对象)
函数从一个可迭代对象得到一个迭代器。
(2) 通过next(iterator/迭代器)
从迭代器中依次取值。 -
实例
L = ['jc','xf','xbz','xdg'] iter_tool = iter(L) #得到迭代器 print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool)) print(next(iter_tool))
输出:
-
解决StopIteration异常
上面的实例中,因为只有4个元素,写了5次next()取值,所以报了StopIteration
异常,这时我们可以使用try...except
来处理。
改进如下:L = ['jc','xf','xbz','xdg'] iter_tool = iter(L) #得到迭代器 while True: try: print(next(iter_tool)) except StopIteration: break #跳出while循环
参考文章:
[1] zsj.python之路——python之迭代器(iterator)详解