美文网首页
Python创建迭代器五种方法

Python创建迭代器五种方法

作者: Charonsl | 来源:发表于2020-08-10 08:24 被阅读0次

方法一

使用__iter__返回一个迭代器对象

class A:
    def __init__(self):
        self.data = [1,2,3,4,5]
        self.count = 0
    def __iter__(self):
        return iter(self.data)

s = A()

for i in s:
    print(i)

方法二

使用__iter__返回一个生成器

class A:
    def __init__(self):
        self.data = [1,2,3,4,5]
        self.count = 0
    def __iter__(self):
        for i in range(10):
            yield i

s = A()

for i in s:
    print(i)

方法三

使用__next__方法实现迭代

class A:
    def __init__(self):
        self.data = [1,2,3,4,5]
        self.count = 0
    def __iter__(self):
        return self
    def __next__(self):
        if self.count > 4:
            raise StopIteration
        data = self.data[self.count]
        self.count += 1
        return data

s = A()
f = iter(s)
for i in f:
    print(i)

方法四

使用__getitem__方法实现迭代

class A:
    def __init__(self):
        self.data = [1,2,3,4,5]
        self.count = 0
    def __getitem__(self, item):
        if item < 4:
            return item + 10
        raise IndexError()

s = A()
for i in s:
    print(i)

方法五

使用iter()两个参数生成迭代器

class A:
    def __init__(self):
        self.data = [1,2,3,4,5]
        self.count = 0
    def __call__(self):
        if self.count < 5:
            data = self.data[self.count]
            self.count += 1
            return data
        raise StopIteration()

s = A()

for i in iter(s,None):
    print(i)

相关文章

网友评论

      本文标题:Python创建迭代器五种方法

      本文链接:https://www.haomeiwen.com/subject/kcjddktx.html