Day 103heapqで優先度付きキュー
Pythonコード
1import heapq2numbers = [4, 2, 9, 6, 5, 1, 8, 3, 7]3print("元のリスト: ", numbers)4heapq.heapify(numbers)5print("ヒープ化したリスト: ", numbers)6print("最小値: ", heapq.heappop(numbers))7print("次の最小値: ", heapq.heappop(numbers))
解説
- 行1〜2: heapqモジュールをインポートし、リストnumbersを定義します。numbersリストには、さまざまな数字が入っています。print関数を使って、numbersリストの内容を表示します。print()関数は、指定された値を画面に表示する役割を持ちます。 行3: heapq.heapify()関数を使って、numbersリストをヒープ化します。ヒープ化とは、リスト内の要素を特定の規則に従って並べ替えることを指します。heapqモジュールでは、最小値が先頭に来るように並べ替えます。heapify()関数は、リストをヒープに変換する役割を持ちます。
- 行4: ヒープ化したnumbersリストの内容を表示します。 行5〜6: heapq.heappop()関数を使って、ヒープ化したリストから最小値を取り出します。取り出された値は、print関数を使って表示します。heappop()関数は、ヒープから最小値を取り除いて返す役割を持ちます。
- 行1〜7: 補足: これらの関数を組み合わせることで、優先度付きキューを実現できます。
次に試してみよう
- リストに新しい要素を追加して、ヒープ化してみましょう。
- 取り出された最小値を別のリストに追加してみましょう。
- ヒープ化したリストから最大値を取り出す方法を調べてみましょう。