Python 知识要点:迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

iter() 函数用来生成迭代器,它主要映射到了类里面的__iter__函数,此函数返回的是一个实现了__next__的对象。

可迭代对象(Iterable)并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__( )方法或__getitem__( )方法访问。

迭代器(当然也是Iterable),同时实现了__iter__和__next__的对象,缺少任何一个都不算是Iterator。

from collections.abc import *


class MyRange:
    def __init__(self, n):
        self.o = n
        m = len(n)
        self.i = 0
        self.n = m

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < self.n:
            ii = self.i
            self.i += 1
            return self.o[ii]
        else:
            raise StopIteration()


x = MyRange("dong_ch_eng")

# 如果对象的类型与参数二的类型相同则返回 True,否则返回 False。
print(isinstance(x, Iterable))
print(isinstance(x, Iterator))
print(isinstance("dong_ch_eng", Iterable))
print(isinstance("dong_ch_eng", Iterator))


print("x.next():", x.__next__())

for i in x:
    print(i)

 

posted @ 2020-06-27 23:55  颗粒成仓  阅读(142)  评论(0编辑  收藏  举报