生成器

#列表生成器
list=[x**2 for x in range(10)]
#print(list)#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

#生成器 保持计算方式 较少内存
#创建生成器 第一种方式
list=(x**2 for x in range(10))
#print(list)#<generator object <genexpr> at 0x00000180AC3080C8> 意思:生产一个对象 再地址0x00000180AC3080C8 放着
#用一个计算出一个
#print(next(list))
#创建生成器 第二种方式
#斐波拉且数列
def creatNum():
    print('--start--')
    a,b=0,1
    for x in range(5):
        yield b#next 后程序暂停 输出b值
        a,b=b,a+b
    print('--end--')
#creatNum()#没有输出“--start--" 因为函数里面有关键字yield 它就是一个生成器 返回一个生成器
#print(creatNum())#<generator object creatNum at 0x000002640EAB3DC8>
a=creatNum() #找一个对象a 来接收它
for x in a :
    print(x)


--start--
1
1
2
3
5
--end--

生成器应用--协同

#生成器的应用 协程

def test1():
    while True:
        yield None
        print('- 1 - ')

def test2():
    while True:
        yield None
        print('- 2 - ')
t1=test1()
t2=test2()
while True :
    next(t1)
    next(t2)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值