Iteration
Iteration并不是一个具体的东西,它是一个抽象的名词,指的是一个接一个的取某个对象的每一个项。包含隐式的,显式的loop,即while,do, for等,这叫iteration。
Iterable和iterator
而在python中,有iterator和iterable。
一个iterable object是实现了__iter__方法的object或者定义了__getitem__方法。一个iteratable object是一个可以得到iterator的object,但是它自己并不一定是iterator object。
而iterator是一个实现了__next__和__iter__方法的object。
iterable object不一定是iterator,iterator一定是iterable object。
可以使用for循环的都是ieterable object,比如str,list,但是它们不是itertor,可以使用iter()方法得到iterator
可以next()的都是iterator
iter和__iter__
所有实现了__iter__方法的object,都是iterable object,可以通过iter()方法产生iterator object。
具体示例
1 | from collections import Iterator |
其中出现了yield关键字。yield关键字的作用是每次迭代执行到该行代码时,就返回一个值,并且记住相应的位置,在下次迭代时继续从该行位置开始执行。
next和__next__
代码示例
1 | from collections import Iterator |
参考文献
1.https://stackoverflow.com/questions/9884132/what-exactly-are-iterator-iterable-and-iteration
2.https://stackoverflow.com/a/46411740/8939281
3.https://www.jianshu.com/p/f9b547874a14
4.https://www.jianshu.com/p/1b0686bc166d