[解決済み] Pythonで2つのソートされたリストを結合する
2023-07-25 21:56:39
質問
オブジェクトの2つのリストがあります。それぞれのリストは、datetime型のオブジェクトのプロパティによってすでにソートされています。2 つのリストを 1 つのソートされたリストに結合したいと思います。最良の方法は、単にソートを行うことですか、それともPythonでこれを行うよりスマートな方法があるのでしょうか?
どのように解決するのですか?
人々はこれを複雑にしすぎているようです。2つのリストを結合し、ソートするだけです。
>>> l1 = [1, 3, 4, 7]
>>> l2 = [0, 2, 5, 6, 8, 9]
>>> l1.extend(l2)
>>> sorted(l1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
...あるいはもっと短く(そして
l1
):
>>> sorted(l1 + l2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
...簡単ですね! さらに、2つの組み込み関数しか使っていないので、リストが適度な大きさであると仮定すれば、ループでソート/マージするよりも速く実装できるはずです。さらに重要なのは、上記の方がはるかに少ないコードで、非常に読みやすいということです。
リストが大きい場合 (数十万以上でしょう)、別のカスタムソート方法を使用した方が早いかもしれませんが、最初に行うべき他の最適化がある可能性があります (たとえば、数百万個の
datetime
オブジェクトを保存しないなど)。
を使うことで
timeit.Timer().repeat()
(関数を1000000回繰り返す)を使って、ゆるくベンチマークをとってみたところ
ghosebの
ソリューション、そして
sorted(l1+l2)
の方が大幅に速いです。
merge_sorted_lists
を取りました。
[9.7439379692077637, 9.8844599723815918, 9.552299976348877]
sorted(l1+l2)
を取った。
[2.860386848449707, 2.7589840888977051, 2.7682540416717529]
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 2つのリストの差を取得する
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。