最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python設(shè)計模式之迭代器模式原理與用法實例分析

 更新時間:2019年01月10日 11:59:20   作者:Andy  
這篇文章主要介紹了Python設(shè)計模式之迭代器模式原理與用法,結(jié)合具體實例形式分析了迭代器模式的概念、原理、定義及使用方法,代碼注釋說明簡單易懂,需要的朋友可以參考下

本文實例講述了Python設(shè)計模式之迭代器模式原理與用法。分享給大家供大家參考,具體如下:

迭代器模式(Iterator Pattern):提供方法順序訪問一個聚合對象中各元素,而又不暴露該對象的內(nèi)部表示.

下面是一個迭代器模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計模式
設(shè)計模式——迭代器模式
迭代器模式(Iterator Pattern):提供方法順序訪問一個聚合對象中各元素,而又不暴露該對象的內(nèi)部表示.
"""
#迭代器抽象類
class Iterator(object):
  def First(self):
    pass
  def Next(self):
    pass
  def Isdone(self):
    pass
  def CurrItem(self):
    pass
#聚集抽象類
class Aggregate(object):
  def CreateIterator(self):
    pass
#具體迭代器類
class ConcreteIterator(Iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = 0
  def First(self):
    return self.aggregate[0]
  def Next(self):
    ret = None
    self.curr += 1
    if self.curr < len(self.aggregate):
      ret = self.aggregate[self.curr]
    return ret
  def Isdone(self):
    return True if self.curr+1 >= len(self.aggregate) else False
  def CurrItem(self):
    return self.aggregate[self.curr]
#具體聚集類
class ConcreteAggregate(Aggregate):
  def __init__(self):
    self.ilist = []
  def CreateIterator(self):
    return ConcreteIterator(self)
class ConcreteIteratorDesc(Iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = len(aggregate)-1
  def First(self):
    return self.aggregate[-1]
  def Next(self):
    ret = None
    self.curr -= 1
    if self.curr >= 0:
      ret = self.aggregate[self.curr]
    return ret
  def Isdone(self):
    return True if self.curr-1<0 else False
  def CurrItem(self):
    return self.aggregate[self.curr]
if __name__=="__main__":
  ca = ConcreteAggregate()
  ca.ilist.append("大鳥")
  ca.ilist.append("小菜")
  ca.ilist.append("老外")
  ca.ilist.append("小偷")
  itor = ConcreteIterator(ca.ilist)
  print itor.First()
  while not itor.Isdone():
    print itor.Next()
  print "————倒序————"
  itordesc = ConcreteIteratorDesc(ca.ilist)
  print itordesc.First()
  while not itordesc.Isdone():
    print itordesc.Next()

運行結(jié)果:

上面類的設(shè)計如下圖:

當需要對聚集有多種方式遍歷時,可以考慮使用迭代器模式

迭代器模式分離了集合的遍歷行為,抽象出一個迭代器類來負責(zé),這樣既可以做到不暴露集合內(nèi)部結(jié)構(gòu),又可以讓外部代碼透明的訪問集合內(nèi)部的數(shù)據(jù)

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • python pandas消除空值和空格以及 Nan數(shù)據(jù)替換方法

    python pandas消除空值和空格以及 Nan數(shù)據(jù)替換方法

    今天小編就為大家分享一篇python pandas消除空值和空格以及 Nan數(shù)據(jù)替換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python使用openpyxl讀取合并單元格的值

    python使用openpyxl讀取合并單元格的值

    本文主要介紹了python使用openpyxl讀取合并單元格的值,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Pandas保存csv數(shù)據(jù)的三種方式詳解

    Pandas保存csv數(shù)據(jù)的三種方式詳解

    CSV文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),是一種通用的、相對簡單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。本文介紹了三種Pandas保存CSV文件數(shù)據(jù)的方法,需要的可以參考一下
    2022-03-03
  • Python學(xué)習(xí)之a(chǎn)syncore模塊用法實例教程

    Python學(xué)習(xí)之a(chǎn)syncore模塊用法實例教程

    這篇文章主要介紹了Python學(xué)習(xí)之a(chǎn)syncore模塊用法,主要講述了asyncore模塊的組成、原理及相關(guān)函數(shù)的用法,對于使用Python進行網(wǎng)絡(luò)編程來說非常實用,需要的朋友可以參考下
    2014-09-09
  • Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示詳解

    Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示詳解

    這篇文章主要介紹了Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示,結(jié)合實例形式分析了Python GUI編程中tkinter界面布局顯示的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • Python使用sklearn實現(xiàn)的各種回歸算法示例

    Python使用sklearn實現(xiàn)的各種回歸算法示例

    這篇文章主要介紹了Python使用sklearn實現(xiàn)的各種回歸算法,結(jié)合實例形式分析了Python使用sklearn庫實現(xiàn)的決策樹回歸、線性回歸、SVM回歸、KNN回歸、隨機森林回歸等各種回歸算法,需要的朋友可以參考下
    2019-07-07
  • 深入理解Python中的*args和**kwargs參數(shù)(示例代碼)

    深入理解Python中的*args和**kwargs參數(shù)(示例代碼)

    *args和**kwargs是Python函數(shù)編程中極其有用的特性,它們?yōu)楹瘮?shù)參數(shù)的處理提供了極大的靈活性和強大的功能,這篇文章主要介紹了Python中的*args和**kwargs參數(shù),需要的朋友可以參考下
    2024-06-06
  • python爬蟲urllib中的異常模塊處理

    python爬蟲urllib中的異常模塊處理

    這篇文章主要為大家介紹了python爬蟲在爬取網(wǎng)頁時urllib中的異常模塊處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python基于pywinauto實現(xiàn)的自動化采集任務(wù)

    Python基于pywinauto實現(xiàn)的自動化采集任務(wù)

    這篇文章主要介紹了Python基于pywinauto實現(xiàn)的自動化采集任務(wù),模擬了輸入單詞, 復(fù)制例句, 獲取例句, 清空剪切板, 然后重復(fù)這個操作,需要的朋友可以參考下
    2023-04-04
  • Python上下文管理器深入講解

    Python上下文管理器深入講解

    Python有三大神器,一個是裝飾器,一個是迭代器、生成器,最后一個就是今天文章的主角 -- 「上下文管理器」。上下文管理器在日常開發(fā)中的作用是非常大的,可能有些人用到了也沒有意識到這一點
    2022-12-12

最新評論

黑河市| 饶阳县| 正定县| 城口县| 阿拉尔市| 新营市| 多伦县| 铁力市| 唐河县| 信宜市| 景泰县| 望奎县| 麻城市| 仁化县| 阳新县| 河源市| 普宁市| 屏南县| 峨眉山市| 宝鸡市| 东丰县| 海城市| 山阴县| 和静县| 荥经县| 赣州市| 武邑县| 崇信县| 阳新县| 乌兰浩特市| 兴仁县| 兰考县| 兴安盟| 中江县| 石台县| 岫岩| 广汉市| 寿光市| 文成县| 兴义市| 湖州市|