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

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 
魅族会成为一家伟大的公司吗大家说的都没错,魅族很难成为一个伟大的公司。魅族的BOSS格局不够。那么久才想清楚要融资,要ESOP,要加强营销投入。魅族的产品太过自我。那么久才愿意加强和消费者的互动,办设计师和广东华锋新能源科技股份有限公司关于签订战略合作框架协议的公告证券代码002806证券简称华锋股份公告编号2022011债券代码128082债券简称华锋转债本公司及董事会全体成员保证信息披露内容的真实准确和完整,没有虚假记载误导性陈述或重大遗小设备解决大问题,居家办公也能遥控公司电脑最近疫情又反反复复,我们公司也响应号召,开启了居家办公模式,不过居家办公还是有诸多不方便的地方,你总不能把公司的电脑搬回家吧。即使把必要的数据都带回家里用,但也总有一些事情是需要用iPhone微距摄影挑战10幅得奖作品官方教iPhone13pro拍摄技巧Apple在2022年初举行ShotoniPhoneMacroChallenge(微距拍摄挑战),收集来自世界各地的iPhone摄影师,使用iPhone13propromax的微距美国企业有望借助微型机器人治疗脑部疾病一个只有米粒大小的微型机器人进入患者大脑,行至指定位置,释放所携带药物,精准打击脑部病灶。这不是科幻电影里的场景,而是美国一家生物制药企业可能在两年内开展的临床试验。据法新社13日院士开课,让面对面的科普成为可能作者王钟的科学素养是公民科学精神的具体体现,它影响着人们的思维方式和行为方式,也是国民素质的重要体现。现代生活的方方面面都离不开科学,社会中大多数人也热爱科学相信科学崇奉科学。但是大数据之HIVE入门(十四)查询优化map端优化当join时有一个或多个小表可以装载进内存时可以使用mapjoin完成。第一种方法是可以加上mapjoin指示第二种方法是设置sethive。auto。conv贾跃亭被解除法拉第未来执行官职务将继续担任首席产品官4月15日消息,电动汽车制造商法拉第未来(FF)刚刚结束了内部调查,并采取了更多纪律处分措施,包括解除其创始人前CEO贾跃亭的执行官职务。法拉第未来在周四提交的备案监管文件中说,贾信达澳亚李博涨价潮贯穿新能源产业链,供需矛盾仍较明显涨价潮这一现象在新能源汽车产业链终端已经越发普遍,主要还是受到上游原材料价格上涨影响,逐步向中下游进行传导。新能源汽车的涨价,虽然对销量有一定影响,但因社会需求量比较大,涨价对销量申通快递发布2021年度业绩快报归属净利润亏损9。09亿元申通快递近日即将发布2021年年报,根据4月14日发布的业绩快报,归属净利润亏损9。09亿元,同比减少2625。业绩快报公告中对经营业绩和财务状况情况的说明2021年度,公司秉承正被路人问围观的游戏机潮酷小风扇,风感聚拢强劲,还能加香氛入一个迷你风扇怎么行。通勤的公交上旅游的路上憋闷的工位里,用处大了。年年看风扇都感觉大同小异,基本都是大圆脑袋,三五个叶片和若有似无的风,平平无奇的设计让人在高温下找不到一点乐趣。
2025年销量要达80万辆零跑汽车朱江明是在画饼还是真有实力说到朱江明,那度风云浙商称号,连颁奖都是由浙江省人民政府副省长庐山亲自颁发,由此可见朱江明在浙江商圈中也拥有不错的影响力。而说到朱江明所创建的零跑汽车,在近两年时间里也确实做出了一linux的initcall机制应用层用链接脚本实现initcall机制的由来我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者通常提供一个xxxinit()函数接口以Dubbo3。0RPC调用集群容错策略之并行请求机制源码分析上一篇Dubbo3。0RPC调用集群容错策略广播机制源码分析使用场景并行调用服务提供者,只要有一个节点返回正确则返回(只适用于查询数据场景)。源码分析LicensedtotheAp深锐观察售价奇高的索尼全开放式真无线耳机LinkBuds实力几何?索尼让消费者意识到耳机不只有入耳半入耳和骨传导,还有更多奇异的形态图为XperiaEarDuo(XEA20)像基于索尼音频技术的日本AMBIE和索尼移动都曾推出过造型诡异的耳机,前你遇到过哪些购买东西糟心的事?前几天我在某宝上拍了个蒸馒头的蒸屉,结果收到货是一个锅盖。前不久,家里工作了17年的空调,罢工了。赶紧在苏宁易购上买。以旧换新。一切都很顺心。下单的当天,拆旧机的师傅就电话联系,并Meta垄断不了社交,我还不能垄断元宇宙?钛媒体注本文来自于微信公众号新浪科技(IDtechsina),编译友亚,钛媒体经授权发布。划重点1正如公司新名称所暗示的那样,Meta希望在元宇宙市场取得胜利,就像之前Facebo2019年字节跳动春招算法题(源代码附上)1。总结难度容易到中等。一些题出的太烂,不给数据范围,而且内存设置有问题,如果是刷题不建议刷。2。题目(1)简单字符串模拟。includeusingnamespacestdintmPython函数的参数类型Python函数的参数类型主要包括必选参数可选参数可变参数位置参数和关键字参数,本文介绍一下他们的定义以及可变数据类型参数传递需要注意的地方。必选参数必选参数(RequiredarA股真正的东数西算绩优龙头,仅有这7家,极具黑马潜力近日,在3月重磅会议上,关于数字经济与算力的消息不断。在消息面上,有代表建议,在中部增加算力网络国家枢纽节点。有代表建议,要加快打造10个国家数据中心集群,稳妥有序推进国家新型互联揭开努比亚Z40Pro极致丝滑小秘密,MyOS12系统初体验从华为的鸿蒙系统小米的miui,再到中兴的MyOS操作系统,国产手机厂商越来愈注重定制操作系统的研发,而它们不输IOS系统的流畅度安全性与稳定性,也让国产手机的使用体验越来越好。M特斯拉回应384万天价充电费系统错误鞭牛士3月6日消息,近日,有网友反映,自己在驾驶特斯拉model3时,收到提示超级充电服务已被禁用,特斯拉手机App显示系统需要支付超级充电费用3,846,306元。特斯拉客服对此