迭代
如果给定一个 list 或 tuple,我们可以通过 for
循环来遍历这个 list 或 tuple ,这种遍历我们称为迭代 (Iteration)。
可迭代:一个对象、物理或者虚拟存储的序列。
list,tuple,strings,dictionary,set 以及生成器对象都是可迭代的,整数型是不可迭代的。那么,如何判断一个对象是可迭代对象呢?方法是通 过 collections 模块的 Iterable 类型判断:
【在 Python 中可以使用 type() 与 isinstance() 这两个函数判断对象类型.】
或者是:
iter() 为 list 返回了 listiterator 对象,为 dictionary 返回了dictionary-keyiterator 对象。类似的对其他可迭代类型也会返回迭代器对象。
最后一个小问题,如果要对 list 实现类似 Java 那样的下标循环怎么办? Python 内置的 enumerate
函数可以把一个 list 变成索引-元素对,这样就可以 在 for
循环中同时迭代索引和元素本身:
迭代器
可以被 next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
可以使用 isinstance() 判断一个对象是否是 Iterator 对象:
生成器都是 Iterator 对象,但 list
、dict
、str
虽然是 Iterable,却不是 Iterator。
把list
、dict
、str
等 Iterable 变成 Iterator 可以使用 iter()
函数:
生成器
在 Python 中,一边循环一边计算的机制,称为生成器:generator。
创建一个 generator:
创建 L
和 g
的区别仅在于最外层的 []
和 ()
,L
是一个 list,而 g
是一个 generator。
『generator 保存的是算法』