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

Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)保存最后N個(gè)元素的方法

 更新時(shí)間:2018年02月13日 11:07:15   作者:壟上行  
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法 保存最后N個(gè)元素的方法,涉及Python基于迭代器與生成器實(shí)現(xiàn)歷史記錄功能的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python保存最后N個(gè)元素的方法。分享給大家供大家參考,具體如下:

問題:希望在迭代或是其他形式的處理過程中對最后幾項(xiàng)記錄做一個(gè)有限的歷史記錄統(tǒng)計(jì)

解決方案:選擇collections.deque。

如下的代碼對一系列文本行做簡單的文本匹配操作,當(dāng)發(fā)現(xiàn)有匹配時(shí)就輸出當(dāng)前的匹配行以及最后檢查過的N行文本:

from collections import deque
def search(lines, pattern, history=5):
  previous_lines = deque(maxlen=history)
  for line in lines:
    if pattern in line:
      yield line, previous_lines
    previous_lines.append(line)
# Example use on a file
if __name__ == '__main__':
  with open('somefile.txt') as f:
    for line, prevlines in search(f, 'python', 5):
      for pline in prevlines:
        print(pline, end='')
      print(line, end='')
      print('-'*20)

正如上面的代碼一樣,當(dāng)編寫搜索某項(xiàng)記錄的代碼時(shí),通常會(huì)用到含有yield關(guān)鍵字的生成器函數(shù),將處理搜索過程的代碼與使用搜索結(jié)果的代碼解耦開來。具體生成器可參考本站迭代器和生成器相關(guān)內(nèi)容。

deque(maxlen=N)創(chuàng)建一個(gè)固定長度的隊(duì)列,當(dāng)加入新元素而隊(duì)列已滿時(shí)會(huì)自動(dòng)移除最老的那條記錄:

>>> from collections import deque
>>> q=deque(maxlen=3)
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3], maxlen=3)
>>> q.append(4)
>>> q
deque([2, 3, 4], maxlen=3)
>>> q.append(5)
>>> q
deque([3, 4, 5], maxlen=3)
>>>

盡管可以在列表上手動(dòng)完成這樣的操作(append、del),但隊(duì)列的這種解決方案要優(yōu)雅得多,運(yùn)行速度也快得多。

如果不指定隊(duì)列長度,則得到一個(gè)無界限的隊(duì)列,可在兩端執(zhí)行添加和彈出操作:

>>> q=deque()
>>> q
deque([])
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3])
>>> q.appendleft(4)
>>> q
deque([4, 1, 2, 3])
>>> q.pop()
3
>>> q
deque([4, 1, 2])
>>> q.popleft()
4
>>> q
deque([1, 2])
>>>

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

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

相關(guān)文章

  • Win7 64位下python3.6.5安裝配置圖文教程

    Win7 64位下python3.6.5安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Win7 64位下python3.6.5安裝配置的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python實(shí)現(xiàn)進(jìn)程同步和通信的方法

    Python實(shí)現(xiàn)進(jìn)程同步和通信的方法

    本篇文章主要介紹了Python實(shí)現(xiàn)進(jìn)程同步和通信的方法,詳細(xì)的介紹了Process、Queue、Pipe、Lock等組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • python實(shí)現(xiàn)的分層隨機(jī)抽樣案例

    python實(shí)現(xiàn)的分層隨機(jī)抽樣案例

    這篇文章主要介紹了python實(shí)現(xiàn)的分層隨機(jī)抽樣案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 深入詳解Python中dotted庫的使用

    深入詳解Python中dotted庫的使用

    Python的dotted庫提供了一種便捷的方式來處理嵌套字典和列表,允許通過點(diǎn)分隔的路徑字符串來訪問和設(shè)置嵌套結(jié)構(gòu)中的數(shù)據(jù),下面我們就來看看它的具體使用
    2019-04-04
  • Python中單元測試的快速入門指南

    Python中單元測試的快速入門指南

    在這篇文章中,我們會(huì)深入探討Python單元測試的各個(gè)方面,包括它的基本概念、基礎(chǔ)知識、實(shí)踐方法、高級話題,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • Python實(shí)現(xiàn)二叉排序樹與平衡二叉樹的示例代碼

    Python實(shí)現(xiàn)二叉排序樹與平衡二叉樹的示例代碼

    樹表查詢即借助具有特殊性質(zhì)的樹數(shù)據(jù)結(jié)構(gòu)進(jìn)行關(guān)鍵字查找,本文所涉及到的特殊結(jié)構(gòu)性質(zhì)的樹包括:二叉排序樹、平衡二叉樹。文中詳細(xì)介紹了二者的實(shí)現(xiàn)代碼,需要的可以參考一下
    2022-04-04
  • 使用Python的Twisted框架編寫簡單的網(wǎng)絡(luò)客戶端

    使用Python的Twisted框架編寫簡單的網(wǎng)絡(luò)客戶端

    這篇文章主要介紹了使用Python的Twisted框架編寫簡單的網(wǎng)絡(luò)客戶端,翻譯自Twisted文檔,包括一個(gè)簡單的IRC客戶端的實(shí)現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例

    python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例

    今天小編就為大家分享一篇python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python匹配中文的正則表達(dá)式

    Python匹配中文的正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。接下來通過本文給大家介紹Python匹配中文的正則表達(dá)式,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Python編程中歸并排序算法的實(shí)現(xiàn)步驟詳解

    Python編程中歸并排序算法的實(shí)現(xiàn)步驟詳解

    這篇文章主要介紹了Python編程中歸并排序算法的實(shí)現(xiàn)步驟詳解,歸并排序的平均時(shí)間復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05

最新評論

海原县| 怀柔区| 百色市| 蒙自县| 景谷| 徐水县| 托克逊县| 宜春市| 秦皇岛市| 景谷| 分宜县| 东丽区| 化德县| 同德县| 虎林市| 朝阳市| 武夷山市| 琼海市| 玛纳斯县| 灵石县| 怀宁县| 长宁区| 巴林左旗| 土默特右旗| 壶关县| 福安市| 呼伦贝尔市| 大连市| 达尔| 姚安县| 梧州市| 阜南县| 平定县| 丁青县| 德兴市| 枣庄市| 新民市| 百色市| 娄烦县| 昭通市| 峨山|