Python-生成器 generator

生成器 generator

定义:能够动态(循环一次计算一 次返回一次)提供数据的可迭代对象。

作用:在循环过程中,按照某种算法推算数据,不必创建容器存储完整的结果,从而节省内存空间。数据量越大,优势越明显。

以上作用也称之为延迟操作或惰性操作,通俗的讲就是在需要的时候才计算结构,而不是一次构建出所有结果

生成器函数

  1. 定义:含有yield语句函数,返回值为生成器对象。

  2. 语法:

# 创建
def 函数名():
    ...
    yield 数据
    ...
# 调用
for 变量名 in 函数名():
    语句
  1. 说明
  • 调用生成器函数将返回一个生成器对象

  • yield翻译为“产生”或“生成”

  1. 执行过程
  • 调用生成器函数会自动创建迭代对象。

  • 调用迭代器对象的next方法时才执行生成器函数。

  • 每次执行到yield语句时返回数据,暂时离开。

  • 待下次调用next方法时继续从离开处继续执行。

  1. 原理:

生成迭代器对象的大致规则如下:

  • 将yield关键字以前的代码放在next方法中。

  • 将yield关键字后面的数据作为next方法的返回值。

内置生成器

枚举函数 enumerate

语法

for 变量 in enumerate(可迭代对象):
	语句

for 索引, 元素 in enumerate(可迭代对象):
	语句

作用:遍历可迭代对象时,可以将索引与元素组合为一个元组。

zip

语法

for item in zip(可迭代对象1,可迭代对象2….) : 
	语句

作用:将多个可迭代对象中对应的元素组合成一个个元组,生成的元组长度由长度最短的可迭代对象决定。

生成器表达式

定义:用推导式形式创建生成器对象。

语法

变量 = (item for item in 可迭代对象 if 条件)

面试题∶

请简逑﹐生成器与迭代器

  • 生成器本质就是:迭代器+可迭代对象.
  • 而可迭代对象就是为了可以迭代( for),而迭代的本质就是不段调用next
  • 生成器最重要的特点调用一次next,计算一次结果﹐返回一个值
  • #这个过程称之为惰性操作╱延迟操作·
  • #在海量数据下,可以大量节省内存.

惰性操作–>立即操作(灵活获取结果)

list(生成器)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜子爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值