zoukankan      html  css  js  c++  java
  • 设计模式之迭代模式

    class BaseIterator:
        """迭代器"""
        def __init__(self, data):
            self.__data = data
            self.toBegin()
    
        def toBegin(self):
            """将指针移至起始位置"""
            self.__curIdx = -1
    
        def toEnd(self):
            """将指针移至结尾位置"""
            self.__curIdx = len(self.__data)
    
        def next(self):
            """移动至下一个元素"""
            if(self.__curIdx < len(self.__data) - 1):
                self.__curIdx += 1
                return True
            else:
                self.__curIdx += 1
                return False
    
        def prevoius(self):
            """移动至上一个元素"""
            if(self.__curIdx > 0):
                self.__curIdx -= 1
                return True
            else:
                self.__curIdx -= 1
                return False
    
        def current(self):
            """获取当前的元素"""
            return self.__data[self.__curIdx] if (self.__curIdx < len(self.__data)) and self.__curIdx >= 0 else None
    
    
    
    class NumberSequence:
        """生成一个间隔为step的数字系列"""
        def __init(self, init, step, max=100):
            self.__data = init
            self.__step = step
            self.__max = max
    
        def __iter__(self):
            return self
    
        def __next__(self):
            if(self.__data < self.__data + self.__step):
                temp = self.__data
                self.__data += self.__step
                return temp
            else:
                raise StopIteration
    
    
    if __name__ == "__main__":
        print("从前往后遍历:")
        iterator = BaseIterator(range(10))
        while(iterator.next()):
            customer = iterator.current()
            print(customer, end="	")
        print()
        print("从后往前遍历:")
        while(iterator.prevoius()):
            customer = iterator.current()
            print(customer, end="	")
  • 相关阅读:
    例20:希尔排序
    例19:直接插入排序
    例14:计算某日是该年的第几天
    为自己
    hdoj--1027--Ignatius and the Princess II(dfs)
    UESTC--758--P酱的冒险旅途(模拟)
    nyoj--990--蚂蚁感冒(模拟)(思维题)
    历届试题 邮局(dfs+剪枝)
    历届试题 数字游戏
    历届试题 回文数字
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13034660.html
Copyright © 2011-2022 走看看