Python迭代器和生成器

for element in [1, 2, 3]:
  print(element)

能for...in...的为可迭代对象

迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

 

判断方法:

  isinstance()

 

迭代器定义方法:

class Reverse:
    """Iterator for looping over a sequence backwards."""
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index - 1
        return self.data[self.index]

 

生成器:

 

def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]  

 

生成器是一种简单有效的创建迭代器的工具:

  1.自动创建__iter__()和__next__()

  2.自动保存局部变量和执行状态

  yield可以简单理解为返回一个迭代器的return

 

列表解析与生成器表达式:

  (x+1 for x in lst) #生成器表达式,返回迭代器。外部的括号可在用于参数时省略。

  [x+1 for x in lst] #列表解析,返回list

 

posted @ 2018-09-07 21:13  IMWU  阅读(229)  评论(0编辑  收藏  举报