ホームページ > バックエンド開発 > Python チュートリアル > Python のソートされたデータ構造

Python のソートされたデータ構造

DDD
リリース: 2024-12-31 06:51:10
オリジナル
1005 人が閲覧しました

Sorted Data Structures in Python

ソートされたデータ構造は、順序を維持しながら検索、挿入、削除の操作を最適化する上で重要な役割を果たします。 Python は、このような構造を操作するためのさまざまなツールとライブラリを提供し、現実世界の数多くの問題に対する効率的なソリューションを提供します。以下について説明します:

  • 山盛りです。
  • 並べ替えられたリスト。
  • 並べ替えられた辞書。
  • ソートされたセット。

heapqモジュール

ヒープ データ構造 (特に最小ヒープ) の堅牢な実装のために、Python の標準ライブラリは組み込みサポートを提供します。 heapq モジュールは、ヒープベースの優先キュー実装を提供します。バイナリ ヒープを使用して部分的な順序を維持するため、最小 (または最大) の要素に繰り返しアクセスする必要があるシナリオに最適です。

例:

import heapq

heap = [3, 1, 4]
heapq.heapify(heap)
heapq.heappush(heap, 2)
print(heap)  # Output: [1, 2, 4, 3]

smallest = heapq.heappop(heap)
print(smallest)  # Output: 1
ログイン後にコピー

利用可能な操作の包括的なリストと追加の例については、公式ドキュメントを参照してください。

sortedcontainersモジュール

sortedcontainers モジュールは、要素が追加または削除されると自動的に調整される動的にソートされたデータ構造を提供します。このライブラリは非常に効率的で使いやすいです。

ソートリスト:

動的な順序でソートされたリストを維持します。

from sortedcontainers import SortedList

sl = SortedList([3, 1, 4])
sl.add(2)
print(sl)  # Output: [1, 2, 3, 4]
ログイン後にコピー

sorted() 関数で使用されるものと同様のキー パラメーターも受け入れます。

from sortedcontainers import SortedList
from operator import neg

sl = SortedList([3, 1, 4], key=neg)
print(sl)  # Output: [4, 3, 1]
ログイン後にコピー

: SortedList は、サポートされておらず、未実装エラーが発生するいくつかのメソッドを除き、可変シーケンスのほぼすべてのメソッドをサポートしています。

SortedDict:

キーがソートされた順序で維持されている辞書。 sorted dict の設計はシンプルです。sorted dict は dict から継承して項目を格納し、ソートされたキーのリストを維持します。

ソートされた辞書キーはハッシュ可能で比較可能である必要があります。キーのハッシュと合計の順序は、ソートされた辞書に保存されている間は変更してはなりません。

from sortedcontainers import SortedDict

sd = SortedDict({"b": 2, "a": 1})
sd["c"] = 3
print(sd)  # Output: {'a': 1, 'b': 2, 'c': 3}
ログイン後にコピー

ソートセット:

要素が確実にソートされるセット。

from sortedcontainers import SortedSet

ss = SortedSet([3, 1, 1, 4])
ss.add(2)
print(ss)  # Output: SortedSet([1, 2, 3, 4])
ログイン後にコピー

SortedList と同様に、SortedSet も同じ方法で使用できるキー パラメーターを受け入れます。


ソートされたデータ構造のトレードオフ

ソートされたデータ構造には大きな利点がありますが、トレードオフもあります。

  • 挿入/削除のオーバーヘッド: これらの操作中に順序を維持すると、ソートされていない構造と比較して計算コストが増加する可能性があります。
  • メモリ オーバーヘッド: 一部の実装では、インデックス付けまたは順序の維持に追加のメモリを使用する場合があります。

結論

ソートされたデータ構造は、動的な順序維持を必要とするアプリケーションを最適化するために不可欠なツールです。開発者はこれらのデータ構造を簡単に実装できる必要がありますが、運用環境にデプロイされたサービスでの例外的な問題について悪夢を抱くことなく、すぐに使用できるこれらの堅牢な実装がすぐに利用できるのは素晴らしいことです。 Python の組み込みライブラリと、sortedcontainers などのサードパーティ モジュールは、さまざまな問題に対して多用途かつ効率的なソリューションを提供します。それらの長所とトレードオフを理解することで、適切なツールを選択して、パフォーマンスが高くスケーラブルなアプリケーションを構築できます。

以上がPython のソートされたデータ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート