首页 新闻 会员 周边 捐助

自定义多迭代类型

0
[已关闭问题] 关闭于 2025-09-09 16:48
# 返回多个独立的可迭代对象
class MultiIterator:
    def __init__(self, wrapped):
        self.wrapped = wrapped   # 封装将被迭代的对象

    def __iter__(self):
        return Next(self.wrapped) # 返回独立的可迭代对象

# 自身的迭代器
class Next:
    def __init__(self, wrapped):
        self.wrapped = wrapped
        self.offset = 0

    def __iter__(self):
        return self

    def __next__(self):   # 返回下一个元素
        if self.offset >= len(self.wrapped):
            raise (StopIteration)
        else:
            item = self.wrapped[self.offset]
            self.offset += 1
            return item    # 返回指定索引位置处的元素


if __name__ == "__main__":
    string = "abc"
    s = MultiIterator(string)
    for x in s:
        for y in s:
            print(x + y, end=" ")
问题补充:

每个for循环自动调用__iter__,都会创建一个独立得迭代器

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-09-09 16:47
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册