首页 > 代码库 > 迭代.迭代器.生成器.Python

迭代.迭代器.生成器.Python

迭代

  如果给定一个 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 对象,但 listdictstr 虽然是 Iterable,却不是 Iterator

  把listdictstr 等 Iterable 变成 Iterator 可以使用 iter() 函数:

  技术分享

生成器

  Python 中,一边循环一边计算的机制,称为生成器:generator

  创建一个 generator:

  技术分享

  创建 和 的区别仅在于最外层的 []  ()是一个 list,而 是一个 generator

  『generator 保存的是算法

 

迭代.迭代器.生成器.Python