首页 > 其他 > 详细

迭代器

时间:2019-03-11 19:06:42      阅读:132      评论:0      收藏:0      [点我收藏+]

1、可迭代对象:我们把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)

技术分享图片
from collections.abc import Iterable
print(isinstance(判断对象,Iterable))  #返回True,说明是可迭代对象,False不是 
isinstance() 判断一个对象是否是 Iterable 对象

一个具备了__iter__方法的对象,就是一个可迭代对象

技术分享图片
from collections.abc import Iterable

class Mylist(object):
    def __init__(self):
        self.container = []

    def add(self,item):
        self.container.append(item)
    def __iter__(self):
        """返回一个迭代器"""
        pass
mylist = Mylist()
print(isinstance(mylist, Iterable))
View Code

 

2、iiter()函数与nex()函数

list、tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后我们可以对获取到的迭代器不断使用next()函数来获取下一条数据。iter()函数实际上就是调用了可迭代对象的__iter__方法。

技术分享图片

3、迭代器

判断一个对象是否是迭代器

 技术分享图片

当我们对迭代器使用next()函数的时候,迭代器会向我们返回它所记录位置的下一个位置的数据。实际上,在使用next()函数的时候,调用的就是迭代器对象的__next__方法(Python3中是对象的__next__方法,Python2中是对象的next()方法)。所以,我们要想构造一个迭代器,就要实现它的__next__方法。但这还不够,python要求迭代器本身也是可迭代的,所以我们还要为迭代器实现__iter__方法,而__iter__方法要返回一个迭代器,迭代器自身正是一个迭代器,所以迭代器的__iter__方法返回自身即可

一个实现了__iter__方法和__next__方法的对象,就是迭代器:

 

迭代器

原文:https://www.cnblogs.com/tylmd/p/10512469.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!