python生成器介绍

生成器

  • 使用场景

    在使用列表时,很多时候我们不会一下子使用全部数据,通常都是一个一个使用,但是当数据量比较大的时候,定义一个大的列表将会是内容使用突然增大。为了解决此类问题,python中引入了生成器的概念。

  • 使用方式

    • 方式1:将列表生成式的[]改为()
    # 列表生成式
    # lt = [i for i in range(10)]
    # 生成器方式1:将列表生成式的[]改为()
    lt = (i for i in range(3))
    
    # 可以转换为列表
    # print(list(lt))
    
    # 可以进行遍历
    # for i in lt:
    #     print(i, end=' ')
    
    # 可以一个一个提取,当遍历完毕后再使用next会报StopIteration错
    print(next(lt))
    print(next(lt))
    print(next(lt))
    
  • 方式2:在函数中是使用yield

    def test(n):
          for i in range(1, n+1):
              # 执行到此处,函数会返回yield后的值,然后停在这里
              yield i
    
      t = test(3)
      # print(t)
    
      # 可以使用next一个一个提取
      # print(next(t))
      # print(next(t))
      # print(next(t))
      # print(next(t))
    
      # 可以遍历
      # for i in t:
      #     print(i)
    
      # 可以转换为列表
      print(list(t))
    
  • 总结:

    • 生成器对象保存的特定数据的生成算法,但并不是保存所有的数据
    • 生成器使用任意一种方式操作,都只能操作一遍
    • 生成器可以做的操作:遍历、转换为列表、next

猜你喜欢

转载自blog.csdn.net/chen1042246612/article/details/84191931
今日推荐