【python实用特性】- 迭代、可迭代对象、迭代器

在我们学过的算法课程中,时常会提到迭代一词。算法中的迭代,指已知一个初始值,再根据一定的规律进行计算,得到下一个值的过程。而在编程中,我们也经常用到它,那就是循环。

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)详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章