我正在嘗試制作一個程式來顯示兩個特定硬幣的資料。它的基本作用是在無限的“for回圈”中獲取資料以顯示資訊,直到我關閉程式。
現在我試圖在每次再次運行時獲取這個無限回圈的最后兩個元素并用它進行計算。我知道我不能只將所有專案都保存在一個串列中,而且我不確定如何存盤最后兩個并每次都使用它們。
for line in lines:
coinsq = line.strip()
url = priceKey coinsq "USDT"
data = requests.get(url)
datax = data.json()
print( datax['symbol'] " " datax['price'])
uj5u.com熱心網友回復:
將資料存盤在雙端佇列中(來自集合模塊)。
像這樣初始化你的雙端佇列:
from collections import deque
d = deque([], 2)
現在,您可以根據需要多次附加到d,并且它只會包含最近的兩個條目。
因此,例如:
d.append('a')
d.append('b')
d.append('c')
for e in d:
print(e)
將給出輸出:
b
c
調整您的代碼以使用此技術應該是微不足道的。
我推薦這種方法來支持使用兩個變數,因為如果您(出于某種原因)決定想要最后 N 個值,則更容易更改,因為您需要做的就是更改雙端佇列建構式
uj5u.com熱心網友回復:
您可以只使用為每個新元素更新的兩個變數,最后您只會看到最后兩個元素:
pre_last = None
last = None
for line in lines:
coinsq = line.strip()
url = priceKey coinsq "USDT"
data = requests.get(url)
datax = data.json()
print( datax['symbol'] " " datax['price'])
pre_last = last
last = datax
#Do the required calculations with last and pre_last
(準確地說,這不是一個無限回圈,否則就不會有“最后一個”元素)
uj5u.com熱心網友回復:
由于您的腳本沒有關于何時停止執行的先驗資訊,我建議定義一個類似佇列的結構。在每次迭代中,您都會更新您的最后一個專案和您的上一個到最后一個。這樣,您只需在記憶體中保留兩個元素。我不知道您打算如何在執行完成后訪問這兩個元素,但是當執行結束時您應該能夠訪問該佇列。
很抱歉沒有提供代碼,但這可以通過多種方式完成,我認為最好向您建議一種處理方式。
uj5u.com熱心網友回復:
您可以為回圈的倒數第二個元素定義一個變數,并將for回圈中已經定義的datax變數用作最后一個元素:
sec_last = None
datax = None
for line in lines:
sec_last = datax
coinsq = line.strip()
url = priceKey coinsq "USDT"
data = requests.get(url)
datax = data.json()
print( datax['symbol'] " " datax['price'])
print(f"Last element", datax)
print(f"Second Last element", sec_last)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/472109.html
下一篇:如何重置/重新初始化變數?
