当前位置: 首页 > news >正文

Python生成器详解

观智能其它文章推荐:快来尝鲜!阿里开源3D人体重建模型,单张图片指定动作生成视频

生成器

1 生成器函数**(Generator function)**

  • 详解:

    生成器可以使用函数来创建,生成器函数使用yield关键字来产生值,而不是使用return。生成器可以被iter()、next()和for循环调用。在迭代时,生成器函数会从上一次的yield语句处恢复执行(Python保存了上下文),直到遇到下一个yield语句或函数结束。****
    所以说生成器是一种特殊的迭代器,更高级的迭代器,__iter__和__next__魔法函数由Python自动实现,不需要我们显式定义。

  • 案例

    做视频推理时使用生成器,即一次返回一帧的推理结果,而不是将所有帧的结果放在列表中一次性返回;

    做大语言模型推理时使用生成器,流式输出,而不是等待所有token生成后一次性返回。

  • 语法: 使用 yield 关键字定义生成器函数。

  • 优点: 可以看出,生成器的一个重要特性是懒惰计算,即它只在需要时才生成值。这意味着生成器不会一次性计算所有值并存储在内存中,从而节省了大量内存。

  • 示例:

    def fibonacci_generator():
        a, b = 0, 1
        while True:
            yield a
            a, b = b, a + b
    
    def square_generator(iterable):
        for value in iterable:
            yield value * value
    
    #既然说在迭代中每次执行到下一个yield语句,那么可以定义一个最简单形式的生成器
    def simple_generator():
        yield 100
        yield 200
        yield 300
    
    if __name__ == '__main__':
        fib = fibonacci_generator()
        for _ in range(10):
            print(next(fib),end=" ")  # 输出: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
    
        print()  # 换行
    
        for i in square_generator([1,2,3,4,5]):
            print(i,end=" ") #输出1 4 9 16 25
    
        print()#换行
    
        for i in simple_generator():
            print(i, end=" ") # 输出100 200 300
    

2 生成器表达式与列表推导式

生成器表达式是构建生成器的另一种方式,类似于列表推导式,但使用圆括号 () 而不是方括号 []

示例:

#通过生成器表达式构建生成器
gen = (x * x for x in range(5))

#普通的列表推导式
l = [x*x for x in range(5)]

相关文章:

  • NVIDIA NeMo 全面教程:从入门到精通
  • 2025蓝桥杯备赛Day12——P8598 [蓝桥杯 2013 省 AB] 错误票据
  • 什么是快重传
  • leetcode0304. 二维区域和检索 - 矩阵不可变
  • 新一代可编程网关应用举例
  • 第一章:优化概述_《C++性能优化指南》notes
  • 权限提升—Windows权限提升土豆家族溢出漏洞通杀全系
  • uni-app自动升级功能
  • spring boot jwt生成token
  • OpenBMC:BmcWeb添加路由5 设置handler函数
  • 网络华为HCIA+HCIP 动态路由协议
  • 大模型训练 | 智能体知识库 资源收集之心理咨询问答数据集
  • Sqoop-试题
  • mysql的学习
  • C语言的内存模型 (堆区,栈区,静态区,常量区,代码区 )概念讲解
  • 互感器制作流程
  • 什么是独立服务器?为什么选择它?
  • 数据分析中,文件解析库解析内容样式调整
  • 一个数组分为两个sum相等的数组
  • 正弦函数的连续傅里叶变换正弦序列的DTFT
  • 济南网站建设与维护/临沂seo推广外包
  • 做网站托管的好处/天津百度百科
  • 做酒的网站有哪些/营销平台是什么意思
  • 泰安北京网站建设/seo和竞价排名的区别
  • 南京江宁网站制作/百度一下你知道
  • 如何给自己的公司网站做优化/百度网盘搜索引擎网站