Python迭代器学习笔记

  发布日期:   2017-08-16
  最新修改:   2020-10-25
  阅读次数:   65 次
  • 在写python代码时,我们经常会用for x in xx: 语法来进行遍历输出,这么爽的特性背后是如何实现的呢?

  • 自定义迭代器类型其实很简单,我们只需要重写_iter__next_即可。

  • _iter_:该方法是迭代器规则的基础,该方法返回一个迭代器对象。

  • _next_:迭代器就是拥有next方法的一个对象,通过不断地去调用next方法判断是否还有值来进行遍历。如果next调用后无值可操作,就会引发一个StopIteration异常

自定义迭代器类

class Fibs:
    def __init__(self):
        self.a =0;
        self.b =1;
    def __next__(self):
        self.a ,self.b = self.b ,self.a+self.b;
        if self.a>1000:
            raise StopIteration;
        else:
            return self.a;
    def __iter__(self):
        return self;

fibs = Fibs();
for f in fibs:
    print(f)
  • 输出:

      1
      1
      2
      3
      5
      8
      13
      21
      34
      55
      89
      144
      233
      377
      610
      987

为什么使用迭代器

  • 我们为什么要使用迭代器而不使用列表呢?
  • 因为列表的杀伤力太大,如果遍历的值很大,列表就会占用非常大的内存。
  • 使用迭代器可以获取一个值时计算一个值。
  • 使用迭代器更通用、简单、优雅

   转载规则

《Python迭代器学习笔记字》GajAngels 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。