Pythonでbisectを用いて、ソート済みのリストに対して要素を挿入する位置を見つけたり、要素を挿入してみます。
今回はbisectを用います。このライブラリ・モジュールはPythonの標準ライブラリですので、事前にインストールする必要はありません。
■Python
今回のPythonのバージョンは、「3.10.9」を使用しています。(Windows11)(pythonランチャーでの確認)
■ソートされたリスト内での値の挿入と検索
Pythonでbisectを用いてソートされたリスト内での値の挿入と検索するスクリプトを書いていきます。
■コード
import bisect # ソート済みのリストを作成 sorted_list = [1, 3, 5, 7, 9] # 要素を挿入する位置を見つける insert_position = bisect.bisect(sorted_list, 4) print("要素 4 を挿入する位置:", insert_position) # 要素を挿入せずに挿入位置を見つける insert_position_left = bisect.bisect_left(sorted_list, 4) print("要素 4 を挿入せずに挿入位置:", insert_position_left) # 要素を挿入する bisect.insort(sorted_list, 4) print("要素 4 を挿入後のリスト:", sorted_list)
まずはbisectモジュールをインポートします。これにより、bisect モジュール内で提供されている関数を使用できるようになります。次にソート済みのリストを作成します。今回はsorted_list という名前のリストを例として使用します。
作成後、bisect.bisect 関数を使用し、指定した値を挿入する位置を見つけます。この関数は、ソート済みのリスト内での指定した値の挿入位置を返します。
次にbisect.bisect_left 関数を使用します。これで、指定した値を挿入せずに挿入位置を見つけます。この関数は、指定した値が既存の要素と一致した場合でも、挿入位置を返します。
さらにbisect.insort 関数を使用します。これで指定した値をソート済みのリストに挿入します。挿入後、リストはソートされた状態を維持します。
最後に、各ステップで得られた結果をprint 関数を用いて表示します。
■実行・検証
このスクリプトを「s_b.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、bisectを用いて要素を挿入する位置を見つけ、bisect.insort 関数を使用して要素を挿入し、挿入されたソート済みのリストを出力させることができました。
コメント