[解決済み] Pythonのdequesはどのように実装され、どのような場合にリストより悪くなるのでしょうか?
2023-02-16 04:42:02
質問
最近、自分のコードをより効率的にするために、Pythonで様々なデータ構造がどのように実装されているかを調べることにハマっています。リストとdequesがどのように動作するかを調べる中で、私はシフトとアンシフトをしたいときに、リストのO(n)からdequesのO(1)に時間を短縮して利益を得られることがわかりました(リストは固定長の配列として実装され、何かが先頭に挿入されるたびに完全にコピーされなければならない、など...)。しかし、dequeがどのように実装されるのか、また、リストに対するデメリットの詳細については、見つけることができません。これらの2つの質問について、誰かが私を啓発することができますか?
どのように解決するのですか?
https://github.com/python/cpython/blob/v3.8.1/Modules/_collectionsmodule.c
<ブロッククオート
A
dequeobject
は2重にリンクされたリストで構成されます。
block
のノードで構成される。
そうそう、このような
deque
は、別の回答が示唆するように、(二重)リンクリストです。
詳しく説明します。一方、dequesは端から物を押したり出したりするのにずっと便利で、インデックス付け(興味深いことに、スライスはできません)も可能ですが、リストより遅いです。
関連
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] Pythonの__future__は何に使うのか、いつ、どのように使うのか、その仕組みについて
-
[解決済み] 通常のPythonのリストと比較した場合、NumPyの利点は何ですか?
-
[解決済み] Pythonで2つのリストを比較し、マッチを返すにはどうすればよいですか?
-
[解決済み】ilocとlocはどう違うのですか?
-
[解決済み】Pythonではリストよりもタプルの方が効率的ですか?
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?