码迷,mamicode.com
首页 > 编程语言 > 详细

Python迭代器和生成器

时间:2018-09-07 21:35:39      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:__init__   迭代   over   可迭代对象   rev   range   迭代器   ...   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迭代器和生成器

标签:__init__   迭代   over   可迭代对象   rev   range   迭代器   ...   python   

原文地址:https://www.cnblogs.com/IMWU/p/9607105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!