classbaseiterator:
"""迭代器
"""def
__init__
(self, data):
self.
__data =data
self.tobegin()
deftobegin(self):
"""將指標移至起始位置
"""self.
__curidx = -1
deftoend(self):
"""將指標移至結尾位置
"""self.
__curidx = len(self.__data
)
defnext(self):
"""移動至下乙個元素
"""if(self.__curidx
< len(self.__data) - 1):
self.
__curidx += 1
return
true
else
: self.
__curidx += 1
return
false
defprevoius(self):
"""移動至上乙個元素
"""if(self.__curidx >0):
self.
__curidx -= 1
return
true
else
: self.
__curidx -= 1
return
false
defcurrent(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="\t"
)
()
print("
從後往前遍歷:")
while
(iterator.prevoius()):
customer =iterator.current()
print(customer, end="
\t")
設計模式之迭代器模式
概念 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。main 客戶 iproject,產品介面 cproject,產品類 iiterator,迭代器介面 iprojectiterator,產品迭代器介面 cprojectiterator,產品迭代器實現類 說明 cproj...
設計模式之迭代器模式
當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,而且可能對聚集有多種方式遍歷時,需要為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等 統一介面,你就應該考慮用迭代器模式.提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示.uml設計圖 部分 ite...
設計模式之迭代模式(Iterator)
意圖 提供一種順序訪問乙個聚合物件中各個元素,而不需要暴露聚合物件內部行為。即將列表的訪問和遍歷從列表物件中分離出來,放入迭代器物件中。使遍歷和列表物件介面。可產生乙個列表物件可以復用多個迭代器 多種遍歷方式 乙個迭代器支援多個列表物件 多個列表物件由相同遍歷演算法,或者列表物件本身提供演算法差異部...