生成器-python 生成器

ernestwang 758 0

生成器

  • 使用场景 在使用列表时,数据量特别大时,内存的占用会突然增加,但是使用时又不需要一下子使用全部,通常都是一个一个使用,为了解决这个问题,python中引入了生成器的概念。
  • 使用方式
    • 方式1:将列表生成式的[]换成()即可
    lt = [i for i in range(10)]
    print(lt)
    
    g = (i for i in range(10))
    # print(g)
    
    # 可以一个一个提取,没有数据继续提取则会报错StopIteration
    print(next(g))
    print(next(g))
    # print(next(g))
    
    # 可以遍历
    # for i in g:
    #     print(i)
    
    # 可以转换为列表
    print(list(g)) 
无论哪种方式操作都是单次的
  • 方式2:在函数中使用yield关键字
  '''
  # 当数据量非常大时,会造成内存占用突然增大
  def test(n):
      lt = []
      for i in range(1, n+1):
          lt.append(i)
      return lt

  print(test(3))
  '''

  def test(n):
      for i in range(1, n+1):
          # 每次获取一个元素,yield后面的值会返回
          # 执行到yield程序又会停止
          yield i   
          
  # t是一个生成器
  t = test(3)
  print(t)

  # print(next(t))
  # for i in t:
    # print(i)

  print(list(t))

标签: 数码

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了