Python迭代器和生成器

Posted IMWU

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Python迭代器和生成器的主要内容,如果未能解决你的问题,请参考以下文章

python函数:迭代器和生成器

Python中迭代器和生成器的区别与联系

python的生成器与迭代器和可迭代对象

1.17 Python基础知识 - 迭代器和生成器初识

Python 初始—(迭代器和生成器)

python编程系列---可迭代对象,迭代器和生成器详解