博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成器
阅读量:4953 次
发布时间:2019-06-12

本文共 1966 字,大约阅读时间需要 6 分钟。

 
##生成器 #在Python中,这种.边循环.边计算的机制,称为生成器:generator。 #不必创建完整的list,从⽽节省⼤量的空间 # 要创建⼀个⽣成器,有很多种⽅法。第⼀种⽅法很简单,只要把⼀个列表⽣成式的[] 改成() L = [x for x in range(5)] print(L) #[0, 1, 2, 3, 4] L = (x for x in range(5)) print(L)  #
at 0x000001F2736538E0> print(next(L)) #0 print(L.__next__()) #1 print(L.__next__()) #2
#生成器函数# Python中提供的生成器:# 1.# 生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行# 2.# 生成器表达式:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表## 生成器Generator:#   本质:迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现)#   特点:惰性运算, 开发者自定义def generator():    print(1)    return 'a'ret = generator()print(ret)   #1  a#只要含有yield关键字的函数都是生成器函数# yield不能和return共用且需要写在函数内def generator():    print(1)    yield 'a'# #生成器函数 : 执行之后会得到一个生成器作为返回值ret = generator()print(ret)      ##
print(ret.__next__()) #1 aprint("==============")def generator(): print(1) yield 'a' print(2) yield 'b' yield 'c'g = generator()# for i in g:# print(i)print("||||||||||||")ret = g.__next__()print(ret) #1 aret = g.__next__()print(ret) #2 bret = g.__next__()print(ret) #c#娃哈哈%idef wahaha(): for i in range(2000000): yield '娃哈哈%s'%ig = wahaha()g1 = wahaha()print(g.__next__()) #g和g1没有关系print(g1.__next__())g = wahaha()count = 0for i in g: count +=1 print(i) if count > 50: breakprint('*******',g.__next__())for i in g: count +=1 print(i) if count > 100: breakdef demo(): for i in range(4): yield ig=demo()g1=(i for i in g)g2=(i for i in g1)print(list(g1)) #[0, 1, 2, 3]print(list(g2)) #[]

 

def test1():    list1 = [1,2,3,4,5,6]    for i in list1:        yield ig = test1()print(g.__next__()) #1print(g.__next__()) #2def test2():    for i in range(5):        yield "编号%s"%ig1 = test2()print(g1.__next__())print(g1.__next__())print("==========")for i in g1:    print(i)#结果'''编号0编号1==========编号2编号3编号4'''

 

转载于:https://www.cnblogs.com/chvv/p/10165905.html

你可能感兴趣的文章
一位菜鸟的java 最基础笔记
查看>>
python 进程间通信
查看>>
深拷贝 vs 浅拷贝 释放多次
查看>>
关于android系统不关屏设置
查看>>
SONY VPCS138EC降级安装XP
查看>>
[luogu4201][bzoj1063]设计路线【树形DP】
查看>>
手机抓包-手机劫持域名到指定服务器
查看>>
被放逐的皇后 金建云
查看>>
Javascript 有用参考函数
查看>>
点群的判别(三)
查看>>
GNSS 使用DFT算法 能量损耗仿真
查看>>
网页抓取 总结
查看>>
【转】Simulink模型架构指导
查看>>
MYSQL数据库的导出的几种方法
查看>>
SQL Server-5种常见的约束
查看>>
硬件之美
查看>>
[转载]java开发中的23种设计模式
查看>>
表格的拖拽功能
查看>>
函数的形参和实参
查看>>
文字过长 用 ... 表示 CSS实现单行、多行文本溢出显示省略号
查看>>