Python強化訓練筆記(七)——使用deque隊列以及將對象保存為文件


collections模塊中的deque對象是一個隊列,它有着正常隊列的先進先出原則。我們可以利用這個對象來實現數據的保存功能。

例如,現有一個猜數字大小的游戲,系統開始會隨機roll點一個0~100的整數,然后鍵盤開始接收你的輸入,每次輸入的數字系統會告訴你比這個隨機數大還是小,直到你猜對了程序才會結束。如下圖這樣:

代碼見:

from collections import deque
from random import randint

N = randint(0, 100)
history = deque([], 5)

def guess(k):
    if k == N:
        print "right"
        return True
    if k < N:
        print "%s is less-than N" % k
    if k > N:
        print "%s is greater-than N" % k
    return False

while True:
    line = raw_input("please input a number:")
    if line.isdigit():
        k = int(line)
        history.append(k)
        if guess(k):
            break
    elif line == "history" or line == "h?":
        print list(history)

在這里我們使用了這個deque對象,它記錄下了我們上次的輸入歷史,便於我們記憶從而避免重復猜測。

deque([], 5)

deque這里接受兩個參數,第一個為隊列的初值,第二個指定存儲空間。這里指定長度為5,超出5個長度后,第一個數出去,最新的數進入。

>>> d = deque([], 5)
>>> d.append(1)
>>> d.append(2)
>>> d.append(3)
>>> d.append(4)
>>> d.append(5)
>>> d
deque([1, 2, 3, 4, 5], maxlen=5)
>>> d.append(6)
>>> d
deque([2, 3, 4, 5, 6], maxlen=5)

保存對象

對於上面的隊列d,我們希望保存下來,下次程序重啟還可以使用,可以使用pickle模塊。

保存

>>> import pickle
>>> s = [1, 2, 3, 4, 5]
>>> pickle.dump(s, open('object', 'w')) >>> # 這樣就將s對象存在了object這個文件中,並且這個文件有一個寫權限

導入

>>> import pickle
>>> s = pickle.load('object')
>>> s
[1, 2, 3, 4, 5]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM