49:魔法方法9(生成器)

本文深入探讨了Python中的生成器概念,包括生成器函数的定义与使用,以及如何通过yield语句控制函数执行流程。此外,还介绍了列表、字典、集合和生成器推导式的语法与应用,帮助读者掌握高效的数据处理技巧。

协同程序:就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始

“中断”

一、生成器:生成器是一个函数,也是迭代器的一个实现,当函数中出现yield语句,该函数则自动定义为生成器

当调用生成器时,函数会停止在第一个yield语句后,并返回yield语句后面的参数,再次调用时若没有yield语句,则跑出StopIteration异常,若存在第二个yield语句,则返回第二个yield语句后面的参数

yield相当于return语句,返回函数的值,但同时会将生成器函数挂起

>>> def myGen():
    print('生成器被执行!')
    yield 1
    yield 2


>>> myg = myGen()
>>> next(myg)
生成器被执行!
1
>>> next(myg)
2
>>> next(myg)
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    next(myg)
StopIteration
>>> 

二、列表推导式

>>> a = [i for i in range(100) if not(i%2) and i%3]
>>> a
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98]
>>> 

三、字典推导式

>>> b = {i : i %2 == 0 for i in range(10)}
>>> b
{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

四、集合推导式

>>> c = {i for i in [1, 1, 2, 3, 4, 5, 6, 7, 9, 3, 2, 1]}
>>> c
{1, 2, 3, 4, 5, 6, 7, 9}

五、生成器推导式

>>> e = (i for i in range(10))
>>> e
<generator object <genexpr> at 0x03325900>
>>> next(e)
0
>>> next(e)
1
>>> for each in e:
    print(each)

    
2
3
4
5
6
7
8
9
>>> sum(i for i in range(100) if i% 2)

2500

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值