zoukankan      html  css  js  c++  java
  • python对象的for迭代实现

    第一种:__iter__

    实现__iter__的对象,是可迭代对象。__iter__方法可以直接封装一个迭代器,从而实现for循环

    class A:
        def __init__(self):
            self.lis = [1,2,3,4]
        def __iter__(self):
            for i in self.lis:
                yield i
    
    
    a = A()
    for i in a:
        print(i)

    第二种:__iter__ 和 __next__

    利用__iter__返回自己,会进一步调用__next__方法,注意__next__方法要有raise StopIteration 的终止条件

    class B:
        def __init__(self):
            self.lis = [1,2,3,4]
            self.c = -1
        def __iter__(self):
            return self
        def __next__(self):
            if self.c < self.lis.__len__()-1:
                self.c+=1
                return self.lis[self.c]
            else:
                raise StopIteration  # 一定有终止

    第三种:__getitems__

    for statement的另一个机制是角标索引,所以利用__getitems__方法同样可以实现

    class C:
        def __init__(self):
            self.a = [1,2,3,4]
        def __getitem__(self, item):
            return self.a[item]
    
    
    c = C()
    for i in c:
        print(i)
  • 相关阅读:
    P1486 [NOI2004]郁闷的出纳员
    P1966 火柴排队
    P2627 修剪草坪
    P1621 集合
    P1025 数的划分
    中国剩余定理
    P2043 质因子分解
    P1075 质因数分解
    C#之引用类型参数
    C#之方法的定义及调用学习案例
  • 原文地址:https://www.cnblogs.com/yxi-liu/p/8463167.html
Copyright © 2011-2022 走看看