Python重点知识三:迭代器

"""
    迭代 Iteration:每次重复的结果作为下一次重复的开始
    迭代器 Iterator :完成迭代的对象,具有__next__()
    可迭代对象 Iterable:创建迭代器的对象,具有__iter__()
"""
message = '我是齐天大圣孙悟空'
# 原理
# for item in message:
#     print(item)

# ###面向过程原理
# 1.获取迭代器
iterator = message.__iter__()
while True:
    try:
        # 2.获取下一个元素
        item = iterator.__next__()
        print(item)
        # 3.如果停止迭代,则退出循环
    except StopIteration:
        break

"""
自定义对象参与for循环
"""


# ###面向对象原理
class StudentIterator:
    def __init__(self, data):
        self.data = data  # 实例化可迭代对象
        self.index = -1   # 初始索引值

    def __next__(self):     # 获取下一个元素 # 判断索引值范围
        if self.index < len(self.data) - 1:
            self.index += 1
            return self.data[self.index]  # 返回元素
        raise StopIteration()  # 发送错误消息


class StudentController:
    def __init__(self):
        self.list_student = []

    def __iter__(self):
        # 创建并返回可迭代对象
        return StudentIterator(self.list_student)


controller = StudentController()
controller.list_student.append("lzl")
controller.list_student.append("jzl")
controller.list_student.append("qjk")

iterator = controller.__iter__()
while True:
    try:
        item = iterator.__next__()
        print(item)
    except StopIteration:  # 接受错误消息
        break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值