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

生成器跟容器还是不一样的,生成器可能有“江郎才尽”的那一天 - GLORY-TO-THE

1.虽然我们平时从运行效果上来说,经常管“生成器”就理解成“容器”。
但是千万别忘了,生成器和列表等容器是不一样的,生成器是“惰性机制”。

要点1:我们在和生成器要值的时候,它是现做现卖的。当我们跟生成器取了最后一个值后,再跟生成器拿东西就没有了。
而列表不一样,列表这个容器就在那里放着,不管你什么时候去用它,不管你在哪用它,它都是那些值。
但是生成器不一样,跟它要了几次值后,后面可能就要不出来值了。

不妨看看下面的题目

def func():for i in range(4):yield i
g = func()  # 1.程序执行到这里,我们知道g是一个生成器,它将来能提供的值有“0,1,2,3”g1 = (i for i in g) # 2.要点2:利用for循环遍历生成器,也是在跟生成器要值。 只不过这句代码执行时,我们没有跟g1要值,它也不会去跟g要值。
g2 = (i for i in g1)
print(list(g1))  # 3.要点3:利用list()函数对生成器进行类型转换,底层会跟生成器要值直到要不出来为止。
print(list(g2))  #题目: 结果为[],而不是【0,1,2,3】。因为上一句代码已经让生成器 2.结论
跟生成器要值的地方,其实底层最终都是靠的生成器的__next__()方法。
http://www.jsqmd.com/news/299372/

相关文章:

  • ppo走中国象棋如果走到某一步3步之内必死会怎么样
  • 03.Python IDE / 编辑器选型指南:PyCharm/VS Code/IDLE 使用对比
  • 【已解决】浏览器出现 STATUS_STACK_BUFFER_OVERRUN 错误的原因及解决方法汇总
  • 5060laptop 显卡安装torch
  • 详细介绍:LLaMA大模型家族发展介绍
  • 模拟 TI C6678 多核并行加速的雷达目标检测与协同处理
  • selenium自动化测试工具实战项目(登录页面)
  • 字体反爬分析
  • JS加密算法
  • Leetcode 剑指 Offer II 159. 库存管理 III
  • 把3D人物模型导入Unity,并给头发衣服附加重力
  • Spring AOP和AspectJ的区别
  • 盒马鲜生礼品卡回收平台实测,京顺回收成行业优选
  • 外包干了9天,技巧退步明显。。。。。
  • 我们和钱的关系,其实早被财富量级定好了
  • 人生的本质是交换:成事的终极公式:极致专注+灵活交换=一切皆可行
  • 31岁仍被说幼稚:上班最狠的PUA是让我们盼着自己变老
  • AI也会“断片”?换个提问顺序,大模型直接变“差生”
  • AI版“马后炮”?大模型的「因果注意力」到底是啥?
  • 真正决定你成长速度的,从来不是你“经历了什么”,而是你“反思透了什么”
  • 学长亲荐!专科生毕业论文必备!8款一键生成论文工具TOP8测评
  • 你看到的人不舒服,就是不好,远离就行,或者不说话不表态:你是世界和核心,没有你,世界将不在存在
  • 别再乱用 `enum` 了!聊聊 C++ 类里枚举的“坑”与“真香”定律
  • 基于51单片机wifi烟雾温湿度检测 无线物联网 火灾报警系统diy
  • 过年和父母吵到沉默才懂:我花了20年,终于“背叛”了他们的人生; 家族第一个博士:撕开阶层的口子,带家人杀出重围
  • STM32单片机车载酒精检测 防酒驾系统 酒精报警器套件GSM
  • 基于32单片机气体监测系统PM2..5烟雾甲醛 温湿度WIFI传输APP显示
  • 基于51单片机 智能鞋柜 语音识别 杀菌消毒无线控制DIY成品
  • 基于51单片机CO2浓度 温室大棚 二氧化碳检测
  • 基于51单片机GPS的公交车自动报站系统GPS自动报站器检测系统DIY