范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python中的生成器

  列表生成式:代码演示:   # 列表生成式 list_1 = [x**2 for x in range(10)]  # x**2处也可以放函数 print(list_1)   #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]  # 代码等价于 list_2 = [] for x in range(10):     list_2.append(x**2) print(list_2)  列表生成式生成器:
  通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
  所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
  要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:  代码演示:  list_1 = (x*2 for x in range(10) )比较生成器和列表生成式  代码演示  import time start_time = time.time() list_1 = (x*2 for x in range(10) ) stop_time = time.time() print(list_1) print("the list_1 run time is %s" % (stop_time-start_time))  start_time = time.time() list_2 = [x*2 for x in range(10) ] stop_time = time.time() print(list_2) print("the list_2 run time is %s" % (stop_time-start_time))  """ 运行结果:  at 0x0000011FACD1ED60> 生成器只有一个列表地址,并没有具体的数值 the list_1 run time is 0.0 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] the list_2 run time is 0.0 """  生成器和生成式的对比生成器只有在调用的时候才会生成相应的数据  生成式可以直接打印列表,生成器只能打印地址  生成式可以通过下角标获取元素,生成器不行  生成器可以通过 __ next()__ 函数获得生成器(generator)的下一个返回值  >>>list_1 = (x*2 for x in range(100000000)) >>>for x in list_1:           print(x) >>>list_1.__next__ >>>list_1.__next__ >>>list_1.__next__只有一个__next()__用来记录当前位置,没有方法访问前面的元素,只能往后面走
  generator非常强大。如果推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候,还可以用函数来实现。  比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
  1, 1, 2, 3, 5, 8, 13, 21, 34, ...
  斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:  def fib(sum):     a, b, c = 0, 1, 0     while c < sum:         print(b)         a, b = b, a + b         c += 1 fib(6)  斐波那契数列仔细观察,可以看出,fib函数实际上是定义了斐波拉契数列的推算规则,可以从第一个元素开始,推算出后续任意的元素,这种逻辑其实非常类似generator。也就是说,上面的函数和generator仅一步之遥。要把fib函数变成generator,只需要把print(b)改为yield b就可以了:   def fib(sum):     a, b, c = 0, 1, 0     while c < sum:         #print(b)         yield b        # 代码执行到这里,会跳出这个函数,并将b的值返回到使用next的代码处         a, b = b, a + b         c += 1 # print(fib(6))  # 这里得到的就是生成器 p = fib(6) print(next(p)) print(next(p)) print("做点别的事情") print(next(p)) print(p.__next__()) print(next(p)) print(p.__next__())  第二种生成器生成方式这就是定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:  >>> f = fib(6) >>> f 
带辅助轮还能调鞋码,安全易上手的唯品乐儿童轮滑鞋近些年,国内发展最快的体育项目非轮滑运动莫属。如今,轮滑运动已经是我国重要的体育项目,也是深受广大青少年青睐并积极参与的运动。不论是在小区一角,或者是公园场地里,都能看到青少年学习又短又快!抖音的新功能你还不知道吗?抖音快手又开始悄悄动手脚了,铁子们有没有发现最近新增的倍速播放功能呀?嫌弃抖音进度条不好拖的我简直狂喜!最近啊,不少网友发现,抖音悄没声地上线了倍速播放功能。长按视频,就会有不感兴双十一买东西攻略好物种草双11玩法都有jiangjiang今年的双11又又又来了,支付宝购物车小算盘还不快准备起来今天给购物车空虚的小伙伴准备了一份实用好物种草清单,文末再扒一扒今年双11新玩法,记得收藏码住,冲冲冲!新能源车的终极猜想Part3这次尝试说说能不能逆袭成功哈照例先放结论大概率是可以的。任务上是目前ZZ任务最正确的赛道我们肯定要掌握能源安全及自己真正的大规模工业的核心能力,而从发达国家的经验来看,汽车工业从来2021双十一投影仪干货极米NEWZ6X和当贝D3X哪个更好?双十一来袭,想购置数码家电的小伙伴,购物车里自然是少不了投影仪的一席之地。不少投影仪品牌也在争先恐后地为打响双十一之战做准备,那么2021年最火爆的两款投影仪当贝D3X和极米NEW读新能源车的终极猜想Part2这是我的几篇学习思考,来自启发俱乐部李丰专场。写下来理理自己的思路,同时作为记录可以回顾。另外,因为是自己的学习思考,所以可能会对原文有一定的曲解,所以如果你想知道李丰老师的想法的详谈左晖读后感引子对我来说,左晖可能是做难而正确的事上的那个北极星而且是少有的真正作成的人。是真正发生在我生活中展开给我看的那个人。让我终于知道这句话具体做起来是什么样的。而,一句至理名言在没有坐个地铁就能被种草?当贝投影这投放绝了当贝投影搞事情啦!!最近的杭州地铁1号线有点不一样杭州地铁1号线覆盖主城区主要商圈和杭州东站,众多杭州标志性景点都在1号线附近,日均客流达180万人次,高峰期客流210万人次,曝光鱿鱼游戏居然抄袭?网友劝你耗子尾汁火爆全球的鱿鱼游戏你看鱿鱼游戏了吗?前不久,Netflix制作韩剧鱿鱼游戏火爆全球,在各类社交平台上引起热议,并一度拿下Netflix美国榜冠军。鱿鱼游戏到底有多火呢?不仅掀起来糖观比亚迪DMi超级混动技术分享会有幸去参加了一次比亚迪官方举办的DMi超级混动的技术分享会。对这个新的超级混动和比亚迪也有了一些新的认识。关于DMi应该是比亚迪的混动技术越来越熟成后,对于如何正确的使用这些技术的看完就是赚了!教你双十一买最实惠的投影仪大促狂欢的jio步朝着我们一天天迈进,心里的小算盘打地飞起,就为了双十一薅一波大羊毛。今年想购置家电的看过来,良心干货投影仪选购指南来啦!你想要的选购方法,打折力度,好货推荐都在这
中科大打破技术垄断,解锁芯技能,光量子芯片成功问世从中国近几年的发展速度来看,可以说很多国家都远远落后。无论是经济建设还是基础设施建设,还是基础设施建设方面的努力,在科研和技术方面,中国也在不断努力。在当今信息时代,最基本的设施是为国人打造的代步车,2。88万起,平均一天有1000多人买宏光MINIEV在2021年,新能源车的全年渗透率已经达到14。8,而且根据权威结构的统计,2022年新能源车的全年渗透率预计能达到23。通过这样的数据我们可以发现,新能源车越来越被消费者认可了。贱驴键鼠三件套高颜值加高生产力一个都不少前言现代人办公离不开的工具就是键盘鼠标,好用的键鼠代表的是高生产力,今天跟大家分享来自贱驴的键盘鼠标和鼠标垫的套装体验,一站式购齐,高颜值与高生产力兼具的数码产品。包装方面,每个产为何越发达的国家,越不扶持电商?看到路边的街道就清楚了近些年来,为推动农产品上行,全国多地纷纷出台相关政策,扶持当地电商发展。但和国内对电商扶持不同的是,国外越是发达的国家,对电商反而越不扶持?其实看看路边的街道我们就能发现其中的原因大公司早报大润发回应员工脚踩冷冻品中消协评春节档票价高是竭泽而渔(整理卢思叶)今天是2月16日星期三,过去的二十四小时有这些大公司要闻可以关注腾讯推出全新业务XR多多买菜推广快递代收点在多地被监管叫停小米回应裁员传闻先来看互联网公司消息腾讯推出23岁的国民社交软件QQ,还会带来什么新惊喜?我觉得没有必要这么来看待QQ,QQ曾经也是为腾讯的崛起做出了贡献的软件。如今的QQ算是很好的将顶流社交软件接力棒交给了微信!要说微信的崛起没有QQ的功劳,我们打死也不相信的!但是Q社群不活跃,如何激活社群用户?我在做咨询的时候就老有学员问我,社群建立没几天就变成灌水群广告了,社群成员不是使劲发广告,就是闲聊刷表情包。没过几天社群就再没声音了,怎么都运营不起来。其实这跟社群没有清晰的定位有滴滴乘客不付车费恶意投诉,导致司机直接封号,该怎么办?谢谢邀请,乘客无理投诉没有什么办法,你就是找客服也永远是推呀推,赔不是。平台永远是听乘客的不管是不是恶意投诉!想申诉成功基本上比法院判无罪难!!!我今天接了一个站点拼车单,乘客上车EUV光刻机!ASML正式宣布,外媒这等于是承认了尽管关于ASML的消息很多,这家全球光刻机巨头在年初公布了2021年财报,很亮眼,这让我们看到作为EUV光刻机独家供应商的巨大利润。不过很快,关于ASML指责中国企业东方晶源侵权一展锐唐古拉T7705G手机获泰尔实验室权威认证来源中国经济周刊经济网据悉,搭载展锐唐古拉T770芯片的5G手机,通过泰尔实验室36个月抗老化性能认证,达到最高等级五级抗老化标准,这是国家级实验室对搭载展锐唐古拉T770芯片的5日常生活中,室内除甲醛新风系统必要性在日常生活中,我们总是不经意间就能接触到甲醛。像在室内装修常用的板材油漆地毯等大多家具含有甲醛。甲醛是一种无色刺激性气味的气体,长期接触会对我们身体造成严重的伤害,而它也已被世界卫