生成器

Posted lifeasdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器相关的知识,希望对你有一定的参考价值。

生成器概念辨析(generator)

本质上是一种边循环边计算的机制,不像函数那样预先计算出所有值,而是需要时再打印,节省了空间

a = [i*i for i in range(5)]
print(a)
#打印结果为[0,1,4,9,16]

在列表生成式a中,一旦定义了列表里的元素数量和相互关系,调用print时就会预先计算好所有元素的值并打印

b = (i*i for i in range(5))
print(b)
#打印结果为<generator object <genexpr> at 0x00467BA0>
b = (i*i for i in range(5))
print(b(0))
#报错: ‘generator‘ object is not callable

在生成器b中,无法像之前类似的语法那样打印所有值,因为print不能调用到b,实际上除了next(),其他函数均无法调用到b的值。

b = (i*i for i in range(5))
for i in b:
    print(i)
#打印结果为
#0
#1
#4
#9
#16

通过for循环取得b内的值

以上是关于生成器的主要内容,如果未能解决你的问题,请参考以下文章

Apollo Codegen 没有找到生成代码的操作或片段

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

vscode代码片段生成vue模板

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

vs 2010代码片段