COMポートデータをPythonでリアルタイムにプロットするには、固定長の配列を作成する必要があります。新しい値を受け取った場合は最後のインデックスに保持し、配列が満たされたら次の更新時に1番目のインデックスに値をダンプします。つまり、最後のインデックスに最新の値を保持し、最初のインデックスで値を空にします(長さを固定します)。Pythonで長さを固定したまま配列を作成する方法はありますか?
3
A
答えて
5
説明した内容は、固定長のダブルエンドキューです。
あなたはPythonの組み込みの両端キューを使用することができます。
from collections import deque
d = deque(maxlen=2)
for i in range(10):
d.append(i)
print(d)
# deque([0], maxlen=2)
# deque([0, 1], maxlen=2)
# deque([1, 2], maxlen=2)
# deque([2, 3], maxlen=2)
# deque([3, 4], maxlen=2)
# deque([4, 5], maxlen=2)
# deque([5, 6], maxlen=2)
# deque([6, 7], maxlen=2)
# deque([7, 8], maxlen=2)
# deque([8, 9], maxlen=2)
あなたはまた、代わりにappend
のappendleft
を使用することがあります。
for i in range(10):
d.appendleft(i)
print(d)
# deque([0], maxlen=2)
# deque([1, 0], maxlen=2)
# deque([2, 1], maxlen=2)
# deque([3, 2], maxlen=2)
# deque([4, 3], maxlen=2)
# deque([5, 4], maxlen=2)
# deque([6, 5], maxlen=2)
# deque([7, 6], maxlen=2)
# deque([8, 7], maxlen=2)
# deque([9, 8], maxlen=2)
、あなたはそれ以外の方法することができます周りにしたい場合リストを継承してappend
を実装してください。わずかに異なる結果に注意してください。
class MyList(list):
def __init__(self, max_len, *args, **kwargs):
super().__init__(*args, **kwargs)
self.max_len = max_len
def append(self, obj):
if len(self) < self.max_len:
super().append(obj)
else:
self.insert(0, obj) # inserting to the left
self.pop() # deleting the last element on the right
li = MyList(2)
for i in range(10):
li.append(i)
print(li)
# [0]
# [0, 1]
# [2, 0]
# [3, 2]
# [4, 3]
# [5, 4]
# [6, 5]
# [7, 6]
# [8, 7]
# [9, 8]
+1
彼は最初に削除したいと最後に追加して私が彼の質問から理解しているものです。 'stack.pop(0) '>' stack.append(6) 'は' [4,5,6] 'を返します。 –
関連する問題
- 1. 多次元配列を固定長のtypescriptでインスタンス化する方法はありますか?
- 2. Java Utilスタックの固定スタックサイズを作成する方法はありますか
- 3. 固定アスペクト比のNativeScript GridLayoutを作成する方法はありますか?
- 4. mongoDBで固定長配列を注文しました
- 5. UWPで固定数の列を持つグリッドビューを作成する方法はありますか?
- 6. cで可変長の配列を作成する方法はありますか?
- 7. oracleデータベースで固定長タイプを作成できますか?
- 8. divを高さで固定する方法はありますが、内容が高さより大きければ成長しますか?
- 9. N個の量のベクトルまたは配列を1回で作成する方法はありますか?
- 10. 固定サイズの配列のベクトルを作成しませんか?
- 11. Windowsカーソルを固定する方法はありますか?
- 12. Railsで長時間のドロップダウンリストを作成する方法はありますか?
- 13. 2D配列を作成するための略記法はありますか?
- 14. 非長方形のUIButtonを作成する方法はありますか?
- 15. JS - すべての配列データから動的URLを作成します(配列の長さは固定されていません)
- 16. タイプを使用して、配列の長さを決定する方法はあります。ここ
- 17. フローで固定長タイプを作成する方法
- 18. ビジュアルアシスト固有のプリプロセッサセクションを作成する方法はありますか?
- 19. 未定義の長さのC#オブジェクト配列を作成しますか?
- 20. 固定長レコードのバイナリファイルを途中で改行しないで処理する方法はありますか?
- 21. レンダリングされた文字列を指定すると、DOMオブジェクトを作成する方法はありますか?
- 22. 次の制約を使用して固定長文字列の配列を動的に作成する方法
- 23. 一般的な固定長配列で関数を定義する方法は?
- 24. 配列を* ngIfでループする方法はありますか?
- 25. ボタンで作成されたノードをキャッチする方法はありますか?
- 26. Pythonで配列の列に項目をあいまいにする方法はありますか?
- 27. 固定長の複数行のテキストボックスを作成する方法
- 28. Pythonでオブジェクトを作成するさまざまな方法はありますか?
- 29. Pythonでループせずに、各行の指定された列を使用して行列からベクトルを作成する方法はありますか?
- 30. 新しい配列で作成された配列の始まりと終わりを得る方法
アレイの代わりにスタックが必要なような音がします。スタックの実装について学んでください(http://interactivepython.org/runestone/static/pythonds/BasicDS/ImplementingaStackinPython.html) –