Python のデータ構造とアルゴリズム - 順序付きリストの維持と二分

Python のデータ構造とアルゴリズム - 順序付きリストの維持と二分

[[402075]]

序文

Bisect は、リストをソートしたままリストに要素を挿入するアルゴリズムを実装します。

この記事では、bisectライブラリを使用してリストを効率的に操作する方法を詳しく紹介します。

注文された挿入物

まず、bisect ライブラリがリスト挿入をどのように実装するかを見てみましょう。具体的なコードは次のとおりです。

  1. インポート二分
  2.  
  3. a = [7, 5, 4, 1, 9, 8, 2, 3, 6, 0, 5]
  4. 印刷(a)
  5. 新しい_a = []
  6. ai場合:
  7. 位置 = bisect.bisect(new_a, i)
  8. bisect.insort(new_a, i)
  9. print(位置、new_a)

実行後の効果は次のようになります。

ご覧のとおり、bisect は挿入用に自動的にソートされ、position は挿入のインデックス位置になります。もちろん、このような挿入の場合は、リストを直接構築してから並べ替える方が速い場合があります。ただし、これは短いリストの場合にのみ非常に高速です。非常に長いリストの場合、上記の挿入ソートを使用すると、特に 2 つのリスト メンバーを比較すると計算オーバーヘッドが大きくなる場合に、時間とメモリを大幅に節約できます。

重複値の処理

実際のリスト処理では、重複した値を処理する場合があります。上記のように、デフォルトでは重複値の右側に余分な 5 が挿入されます。これは、insort_right() 関数を使用するのと同じです。同様に、左側では insort_left() 関数を使用できます。

  1. インポート二分
  2.  
  3. a = [7, 5, 4, 1, 9, 8, 2, 3, 6, 0, 5]
  4. 印刷(a)
  5. 新しい_a = []
  6. ai場合:
  7. 位置 = bisect.bisect_left(new_a, i)
  8. bisect.insort_left(new_a, i)
  9. print(位置、new_a)

実行後の効果は次のようになります。

読者は上の 2 つの画像を比較すると、最後の行のインデックスが変わることがわかります。ご覧のとおり、1 つは 6 で、もう 1 つは 5 です。積極的に変更したため、重複した値はデフォルトで左側に挿入されます。

<<:  アメリカ人教授がAI会議での不正行為を暴露:著者は査読者と共謀し、ゴミ論文も査読を通過

>>:  データ分析技術:エッジ人工知能の応用

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Keras 機能 API によるディープラーニング

[[380280]] Keras Python ライブラリを使用すると、ディープラーニング モデルを...

人工知能 + ブロックチェーンの開発動向と応用研究レポート(受賞リスト付き)

[51CTO.com からのオリジナル記事] AI とブロックチェーンは現在、2 つの人気の技術方...

週刊「ニュース速報」 | AIエリートは数百万ドルを稼ぐ? !李開復氏がAI業界のチャンスを明かす!

AIエリートが100万以上稼ぐ!マスク氏が設立したOpenAIが誤って給与情報を公開4月23日のニ...

AIはIoTベースのDDoS攻撃を阻止できる

研究者らによると、人工知能はインターネットサービスプロバイダー(IPS)がDDoS攻撃に先手を打つの...

Sparkに代わると期待されるリアルタイム機械学習フレームワークRay

新しいプロジェクトは、Python で記述された機械学習アプリケーションをサポートするために使用でき...

...

2024 年の IT 管理トレンド: ジェネレーティブ AI など

2023 年の幕がゆっくりと下りる中、IT 業界は楽観と慎重さをもって新年を待ち望んでいます。警戒感...

...

初のヒューマンモーションキャプチャーモデルをリリース! SMPLer-X: 7つのチャートを一掃

表現力豊かな人間の姿勢と形状の推定 (EHPS) の分野では大きな進歩が遂げられていますが、最も先進...

ALS の少年がアリ数学コンテストで輝く!ブラックホールを研究するためにMITに独学で入学、指導者はホーキングと非常に似ている

今年のアリババ世界数学コンテストでは、特別優秀賞受賞者が決定しました。 ALSを患う20歳の少年、ル...

DeepMindはAIを使ってチェスの新しいルールを作成する

今回、彼らは元チェス世界チャンピオンのウラジミール・クラムニクとチームを組み、AI技術にこの古代のボ...

...

AIがIT業界とAV業界にもたらす変化

[51CTO.com クイック翻訳]人工知能が情報技術 (IT) 業界とオーディオビジュアル (AV...

ホーキング:人工知能やその他の技術の発展は人類を滅ぼすかもしれない

新浪科技報、北京時間3月15日、海外メディアの報道によると、スティーブン・ホーキング博士は最近、人類...

Tantan Pan Ying: アルゴリズムベースの「額面」ソーシャル プラットフォームを作成する方法

編集者注: 「女性が風邪をひかずに舞台を降りられるのは素晴らしいことだ。そして、心が情熱で満たされる...