Python 迭代器

迭代器简述

迭代器(iterator)是一种可在容器(container)中遍访的接口,为使用者封装了内部逻辑。

——[百度百科·迭代器](https://baike.baidu.com/item/%E8%BF%AD%E4%BB%A3%E5%99%A8/3803342?fr=aladdin[1]) 大意

举例

for i in [1,2,3,4,5]:
    print(i)
print('-' * 10)
for i in 'hello':
    print(i)

输出结果

复制代码
1
2
3
4
5
----------
h
e
l
l
o
复制代码

判断是否是迭代器

可迭代对象须具有__iter__(),可迭代对象可以使用for循环进行遍历,可以使用

from collections.abc import Iterable
模块判断是否可迭代,示例如下
print(isinstance([1,2,3,4],Iterable))
print(isinstance((1,2,3,4),Iterable))
print(isinstance('hello',Iterable))
print(isinstance(1234,Iterable))
print(isinstance({"name":'张三',"age":12},Iterable))

输出

True
True
True
False
True

创建迭代器

要定义一个数据类型,具有__iter__()方法并且该方法返回一个带有__next__()方法的对象,而当该类已经具有__next__()方法时则返回其本身。示例代码如下:

复制代码
class Reverse(object):
    '''方向遍历列表迭代器'''

    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        '''迭代逻辑'''
        if self.index == 0:
            raise StopIteration
        else:
            self.index -= 1
            return self.data[self.index]
复制代码

验证

title =iter(reversed('笑傲江湖'))

for i in title:
    print(i)

输出

湖
江
傲
笑

for 循环与迭代器

实际上在执行for语句的时候,Python 悄悄调用了内置函数`iter()`[6],并将for语句中的容器对象作为参数传入;而函数`iter()`[7]返回值则是一个迭代器对象。因此,for语句是将容器对象转换为迭代器对象之后,调用__next__()方法,逐个访问原容器中的各个对象,直到遍历完所有元素,抛出一个StopIteration异常,并终止for循环。

posted @   晓枫的春天  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
历史上的今天:
2022-06-14 Flink Yarn 模式
点击右上角即可分享
微信分享提示