Python进阶-迭代器和生成器
Posted 下划线是我
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶-迭代器和生成器相关的知识,希望对你有一定的参考价值。
- 可迭代对象的定义
可以直接作用于for
循环的数据类型有以下几种:
一类是集合数据类型,如list
、tuple
、dict
、set
、str
等;
一类是generator
,包括生成器和带yield
的generator function。
这些可以直接作用于for
循环的对象统称为可迭代对象:Iterable
。
- 生成器
- 创建生成器的方式
打印生成器
-
- next(g) 或者 for n in g: print(n)
- 特殊:generator和函数的执行流程不一样。函数是顺序执行,遇到
return
语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。-
def odd(): print(\'step 1\') yield 1 print(\'step 2\') yield(3) print(\'step 3\') yield(5)
>>> o = odd() >>> next(o) step 1 1 >>> next(o) step 2 3 >>> next(o) step 3 5 >>> next(o) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
-
以上是关于Python进阶-迭代器和生成器的主要内容,如果未能解决你的问题,请参考以下文章