2014-02-27 58 views
1

我有一個超聲波ping傳感器從Python獲取輸出。這讀數是在Python中的最後三個項目

while True: 

所以,顯然永遠不會停止。

該數據被設置爲一個名爲'ping_out'的變種。我需要從ping_out得到最後三個讀數,並對它們進行平均,以便得到一個名爲ping_average的變量。我怎樣才能做到這一點?

謝謝!

+0

您可以顯示設置 'ping_out' 的代碼?一個長度爲3的隊列似乎是適當的數據結構。 –

+1

相關:http://stackoverflow.com/questions/11352047/finding-moving-average-from-data-points-in-python – kojiro

+0

ping_out = timepasssed * 17000. Timepass是發送脈衝和恢復之間的時間。 – developius

回答

4

使用長度3 deque對象:

from collections import deque 
last3 = deque(maxlen=3) 

while True: 
    last3.append(this_ping) # <-- insert your ping here, of course 
    avg = sum(last3)/len(last3) 
    print avg 
+0

不錯。我的一部分想要預先優化這個'len(last3)'位,因爲你只需要調用它最多三次。 – kojiro

+0

我想知道你的優化會被優化的開銷否定多少:) – mhlester

+0

非常感謝你的出色答案,並且非常快速的回覆!!!!!也感謝你@David試圖:)不幸的是,這裏的每個人都有可笑的快速打字;) – developius