python3 函数迭代器
admin
2023-07-24 17:42:12
0

迭代器协议:

迭代器协议,是指对象(实例)能够使用next函数获取下一项数据,在没有下一项数据之前触发一个StopIteration异常来终止迭代


next(it)  对应__next__(self)方法

iter(obj) 对应__iter__(self)方法,通常返回一个可迭代对象



class odd:

    def __init__(self,begin,end):

        self.beg = begin

        self.end = end 

        self.cur = begin   #数据的当前位置

    

    def __next__(self):

        """print("next被调用")"""

        if self.cur >= self.end:

            raise StopIteration

        #此判断获取一个奇数,

        if self.cur % 2 == 0:

            self.cur += 1


        r = self.cur

        self.cur += 1   #步长

        return r

    

    def __iter__(self):

        """__iter__被调用,返回自己作为迭代器,每次返回一个可迭代对象,调用一次__iter__"""    

        self.cur = self.beg

        return self


o = odd(5,10)

for x in o:

    print(x)


print([x for x in o])


相关内容

热门资讯

美军打击伊朗,报复商船遇袭事件 美国中央司令部6月27日于社交媒体平台“X”发文,称美军于6月26日对伊朗发动打击,以此强力回应前一...
美称设立军事协调小组协助落实美... △美国国务卿鲁比奥(资料图)当地时间6月26日,美国国务卿鲁比奥发布声明表示,当日,美国、黎巴嫩和以...
布基纳法索宣布与法国断交 △布基纳法索(资料图)当地时间6月26日,布基纳法索政府宣布,自当天起断绝与法国的外交关系。布政府表...
美以黎签署三方框架协议,细节披... 当地时间26日晚,一名以色列官员披露称,经过美国、以色列和黎巴嫩三方的会谈,三方代表当晚在美国签署了...
联合国官员:委内瑞拉强震后逾5... 财联社6月27日电,联合国分管人道主义事务的副秘书长兼紧急救援协调员汤姆·弗莱彻表示,在委内瑞拉发生...
伊朗否认伊美就霍尔木兹海峡问题... 当地时间26日,伊朗伊斯兰革命卫队发言人侯赛因·穆赫比表示,针对“伊朗与美国已就霍尔木兹海峡问题设立...
特朗普:伊朗违反了停火协议 财联社6月26日电,美国总统特朗普表示,美军击落了伊朗三架无人机。特朗普称伊朗在霍尔木兹海峡发动的无...
江阴祝塘:荣飞5G智能绿色工厂... 6月23日,江阴市祝塘镇重点数字化转型标杆项目——荣飞5G智能绿色工厂项目顺利完成主体封顶。该项目聚...
翔亚机械取得一种电梯按键专利,... 国家知识产权局信息显示,嘉兴市翔亚机械设备有限公司取得一项名为“一种电梯按键”的专利,授权公告号CN...
溧阳市博物馆一张展出照片被指系... 极目新闻记者 张奇 近日,有网友在社交网站反映,江苏常州溧阳市博物馆展出了使用AI技术生成的图片,其...