美文网首页
python3的迭代器和生成器

python3的迭代器和生成器

作者: feitry | 来源:发表于2019-08-23 11:14 被阅读0次

    python语言的迭代器,用于访问集合元素,可以记录访问的位置的对象,迭代器的基本方法:iter和next
    python语言的生成器,可以返回迭代器对象,关键字yield。
    个人理解:
    迭代器和生成器,在python中,迭代器方法 iter 和 next;
    iter方法创建一个迭代器
    next方法依次取值;迭代器的强大之处在于它能记录你的取值位置

    生成器,返回一个迭代器
    生成器的关键字yield
    yield的语法类似return,具有返回作用,但是,yeild不同于return;
    return返回执行返回空或具体的值后,不在执行同代码组的后续代码,例如在函数中,执行return后,该函数的后续代码将不在执行;而yield方法,返回具体值并会记录该值,代码可以继续执行,直到改代码组代码执行结束。

    迭代器示例代码:

    
    # 代码-迭代器
    list0 = [1,2,3,4]
    it = iter(list0)
    print(type(list0))#<class 'list'>
    print(type(it))#<class 'list_iterator'>
    '''
    
    print(next(it))#1
    print(next(it))#2
    print(next(it))#3
    print(next(it))#4
    # print(next(it))#报错 StopIteration 
    
    '''
    
    '''
    #for 循环访问迭代器
    for x in it:
        print(x)
    '''
    
    '''
    #使用sys模块,迭代器访问结束退出
    import sys
    while True:
        try:
            print(next(it))
        except StopIteration:
            sys.exit()
    '''
    # 自定义类迭代器
    # class MyNumber:
    #     def __iter__(self):
    #         self.a = 1
    #         return self
    #
    #     def __next__(self):
    #         if self.a <= 10:
    #             x = self.a
    #             self.a +=1
    #             return x
    #         else:
    #             raise StopIteration
    #         # x = self.a
    #         # self.a += 1
    #         # return x
    #
    # if __name__ == '__main__':
    #     myclass = MyNumber()
    #     myiter = iter(myclass)
    #     print(next(myiter))
    #     print(next(myiter))
    #     print(next(myiter))
    #     print(next(myiter))
    #     print(next(myiter))
    #     print(next(myiter))
    #     for i in myiter:
    #         print(i)
    
    
    
    

    生成器创建迭代器代码:(经典代码-裴波那契数列)

    # 生成器
    '''
    yield
    
    '''
    
    
    import sys
    def fibonacci(n):#生成器函数-裴波那契数列
        a,b,counter = 0,1,0
        while True:
            if (counter > n):
                return
            yield a
            a,b = b , a+b
            counter+=1
    f = fibonacci(10)#f是一个迭代器,由生成器返回生成
    
    while True:
        try:
            print(next(f),end=' ')
        except StopIteration:
            sys.exit()
    

    相关文章

      网友评论

          本文标题:python3的迭代器和生成器

          本文链接:https://www.haomeiwen.com/subject/rlezsctx.html