协同程序:就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始
“中断”
一、生成器:生成器是一个函数,也是迭代器的一个实现,当函数中出现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
本文深入探讨了Python中的生成器概念,包括生成器函数的定义与使用,以及如何通过yield语句控制函数执行流程。此外,还介绍了列表、字典、集合和生成器推导式的语法与应用,帮助读者掌握高效的数据处理技巧。
1047

被折叠的 条评论
为什么被折叠?



