1. 程式人生 > >Python學習筆記:儲存最後N個元素

Python學習筆記:儲存最後N個元素

儲存yo有限的歷史記錄是collection.deque的完美應用場景。下面的程式碼對一系列文字行做簡單的文字匹配操作,當發現有匹配時就輸出當前的匹配行以及最後檢查過的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)
if _name_ == '_mainn_:
    with open('somefile.txt ')' as f:
         for line,prevlines in search(f, 'python', 5):
               for pline in prevlines:
                    print(pline, end='')
                    print('*'*20)

deque(maxlen=N)建立一個固定長度的佇列。當新紀錄加入而佇列已滿時會自動移除最老的那條紀錄。例如:
>>>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)


相關推薦

Python學習筆記儲存最後N元素

儲存yo有限的歷史記錄是collection.deque的完美應用場景。下面的程式碼對一系列文字行做簡單的文字匹配操作,當發現有匹配時就輸出當前的匹配行以及最後檢查過的N行文字, from collections import deque def search(lines,

儲存最後N元素,找到最大或者最小的N元素特殊佇列deque,heapq模組--cookbook讀書筆記

1. 特殊的佇列collections.deque,儲存最後N個元素儲存有限的歷史記錄可算是collections.deque的完美應用場景了。deque與list的區別是:deque初始化的時候可以規定佇列大小,超過預定大小,新加入的元素會擠掉最早進入的元素;deque不僅

python 基礎知識點(四)保留最後 N 元素

lin 生成器 collect 搜索結果 not 頭插 color 自動 bsp 問題 在叠代操作或者其他操作的時候,怎樣只保留最後有限幾個元素的歷史記錄? 解決方案 保留有限歷史記錄正是 collections.deque 大顯身手的時候。比如,下面的代碼在多行上面做簡單

python學習筆記字符串

修改 結束 () 添加 cnblogs hid src 處理 linu string類型由多個字符組成,可以把字符串看成一個整體,也可以取得字符串中的任何一個部分。 函數len() 返回字符串的長度 >>> address = ‘www.baidu.c

python學習筆記函數

筆記 函數 技術 nbsp bubuko pytho img info 學習筆記 python學習筆記:函數

20180821 Python學習筆記如何獲取當前程序路徑

con awl tab style onf getcwd nbsp 為知筆記 想要 20180821 Python學習筆記:如何獲取當前程序路徑啟動的腳本的路徑為:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py當前腳本的路徑

Python學習筆記單例模式

turn 實例 提示 type類 metaclass let 所有 python3.6 ips 單例模式:一個類無論實例化多少次,返回的都是同一個實例,例如:a1=A(), a2=A(), a3=A(),a1、a2和a3其實都是同一個對象,即print(a1 is a2)和

python學習筆記第7天 深淺拷貝

我們 spl 交集 再次 ipy section 結束 技術分享 dict 目錄 1. 基礎數據類型補充 2. set集合 3. 深淺拷貝 1. 基礎數據類型補充 (1)join方法 join方法是把一個列表中的數據進行拼接,拼接成字符串(與split方法相反,spli

python學習筆記第8天 文件操作

只讀 查看 lse tex ati 使用場景 java 創建文件 存在 1. 文件操作介紹 說到操作文件我們肯定會想到流,文件的操作都是通過流來操作的。在python中文件的操作非常簡單,並不像Java等其他語言一樣有各種各樣的流操作,我們直接使用open函數即可打開一個文

Python學習筆記一手漂亮的Python函數

可能 emp func 就是 外部 指南 pep 沒有 dem 使用類和函數定義模型 函數是抽象和封裝的基本方法之一 重構函數 -- 命名合理 -- 具有單一功能 -- 包含文檔註釋 -- 返回一個值 -- 代碼不超過 50 行 -- 冪等函數,盡可能是純函數

python學習筆記第11天 閉包及迭代器

目錄 1. 函式名的使用 2. 閉包 3. 迭代器 1. 函式名的使用 其實函式名也是一個變數,但它是一個比較特殊的變數,與小括號配合可以執行函式的變數: 函式名其實和記憶體一樣,也可以使用print檢視它的記憶體地址: In[22]: def func1(): .

Python學習筆記bisect模組實現二分搜尋

  在Python中可以利用bisect模組來實現二分搜尋,該模組包含函式只有幾個: import bisect L = [1,3,4,5,5,5,8,10] x = 5 bisect.bisect_left(L,x) # 3 # 在L中查詢x,x存在時返回x最左側的位置,x不存在返回應該插入

python學習筆記第12天 列表推導式和生成器

目錄 1. 迭代器 2. 推導式 1. 迭代器 什麼是生成器呢,其實生成器的本質就是迭代器;在python中有3中方式來獲取生成器(這裡主要介紹前面2種) 通過生成器函式獲取 通過各種推導式來實現生成器 生成器函式 我們來看一個普通的函式: In[2]: def fu

Python學習筆記bisect模塊實現二分搜索

筆記 class tro -s clas range mar block 圖片   在Python中可以利用bisect模塊來實現二分搜索,該模塊包含函數只有幾個: import bisect L = [1,3,4,5,5,5,8,10] x = 5 bisect.

python學習筆記第12天 列表推導式和生成器

clas traceback 括號 module recent else 接收 工作 last 目錄 1. 叠代器 2. 推導式 1. 叠代器 什麽是生成器呢,其實生成器的本質就是叠代器;在python中有3中方式來獲取生成器(這裏主要介紹前面2種) 通過生成器函數獲

OpenGL學習筆記GLAD和第一視窗

環境 系統:Windows10 64位 家庭中文版 IDE:Visual Studio 2017 專業版 參考教程:https://learnopengl-cn.github.io/01 Getting started/03 Hello Window/ 步驟 1.獲取GLAD

Python學習筆記import sys模組(argv、path、platform、exit)

  sys模組是Python標準庫中自帶的一個模組。   sys模組包括了一組非常實用的服務,內含很多函式方法和變數,用來處理Python執行時配置以及資源,從而可以與當前程式之外的系統環境互動,如:Python直譯器。   一、匯入sys模組 import sys #匯入sys模組 dir(sy

Python學習筆記出生日期轉化為年齡

  在資料探勘專案中,有時候個體的出生日期包含資訊量過大,不適合作為一個有效資料進入模型演算法訓練,因此有必要把出生日期轉化為年齡age,age是一個很好的特徵工程指示變數。 import pandas as pd import numpy as np from pandas import Serie

python學習筆記目錄結構

"專案目錄結構"其實也是屬於"可讀性和可維護性"的範疇。 目錄組織方式 關於如何組織一個較好的Python工程目錄結構,已經有一些得到了共識的目錄結構。在Stackoverflow的這個問題上,能看到大家對Python目錄結構的討論。 這裡面說的已經很好了,我也不打算重新造輪子列舉各種不同的方式,這裡面

python學習筆記網絡請求——urllib模塊

.com auto pos code html 數據 () python學習 標準 python操作網絡,也就是打開一個網站,或者請求一個http接口,可以使用urllib模塊。urllib模塊是一個標準模塊,直接import urllib即可,在python3裏面只有ur