python之迭代

本文详细解析了Python中for循环的工作原理,包括获取迭代器、循环获取元素及遇到StopIteration异常时的处理。同时,通过实例展示了列表、字典以及自定义类如何实现迭代。文中还介绍了Graphic类、GraphicIterator类以及GraphicManager类,演示了如何创建自定义迭代器并应用于for循环中。
摘要由CSDN通过智能技术生成
for循环的原理:
    1.获取迭代器
    2.循环获取下一个元素
    3.遇到异常停止循环

可以被for循环的原理--能被for循环的对象必须具有__iter__()方法(即可迭代对象)

PS:具有__iter__()方法的对象就是可迭代对象
# 1.获取迭代器
iterator = list01.__iter__()
# 2.循环获取下一个元素
while True:
    try:
        item = iterator.__next__()
        print(item)
# 3.遇到异常停止循环
    except StopIteration:
        break

list02 = ["哆啦A梦", "天线宝宝", "东京猫猫"]
iterator02 = list02.__iter__()
while True:
    try:
        item = iterator02.__next__()
        print(item)
    except StopIteration:
        break

list03 = {
    "哆啦A梦": 1001,
    "天线宝宝": 1002,
    "东京猫猫": 1003,
}
iterator03 = list03.__iter__()
while True:
    try:
        item = iterator03.__next__()
        print(item, list03[item])
    except StopIteration:
        break


class Graphic:
    pass


class GraphicIterator:
    def __init__(self, target):
        self.__target = target
        self.__index = 0

    def __next__(self):
        if self.__index > len(self.__target)-1:
            raise StopIteration
        temp = self.__target[self.__index]
        self.__index += 1
        return temp


class GraphicManager:
    def __init__(self):
        self.__graphics = []

    def add_graphic(self, graphic):
        self.__graphics.append(graphic)

    def __iter__(self):
        return GraphicIterator(self.__graphics)


if __name__ == '__main__':
    manager = GraphicManager()
    manager.add_graphic(Graphic())
    manager.add_graphic(Graphic())
    manager.add_graphic(Graphic())

    iterator = manager.__iter__()

    while True:
        try:
            item = iterator.__next__()
            print(item)
        except StopIteration:
            break

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值