Pythonで2つのリストをマージしてソートする方法
2つのリストを1つに結合(マージ)し、さらに昇順にソートしたいケースはよくあります。Pythonでは、リスト同士を「+」演算子で連結し、組み込みの sort() メソッドを使うことで、シンプルに実現できます。
ここでは、2つのリストを受け取ってマージ・ソートした結果を返す関数の実装例を紹介します。
サンプルコード
def merge_list(list_1, list_2):
merged_list = list_1 + list_2
merged_list.sort()
return(merged_list)
list_1 = [20, 18, 9, 51, 48, 31]
list_2 = [28, 33, 3, 22, 15, 20]
print("最初のリスト:")
print(list_1)
print("2番目のリスト:")
print(list_2)
print(merge_list(list_1, list_2))
実行結果
最初のリスト: [20, 18, 9, 51, 48, 31] 2番目のリスト: [28, 33, 3, 22, 15, 20] [3, 9, 15, 18, 20, 20, 22, 28, 31, 33, 48, 51]
コードの解説
merge_listという名前の関数を定義し、引数として2つのリストを受け取ります。「+」演算子を使って2つのリストを連結します。元のリスト自体は変更されません。
連結結果を変数
merged_listに代入します。sort()メソッドを呼び出すことで、マージされたリストが昇順にソートされます。関数の外側で2つのリストを定義し、その内容をコンソールに表示します。
定義した2つのリストを引数として渡し、
merge_list関数を呼び出します。マージ・ソートされた結果がコンソールに出力されます。
補足ポイント
sort() メソッドはリストを破壊的に(元のリストを直接)ソートします。元のリストを保持したい場合は、sorted(list_1 + list_2) のように組み込み関数 sorted() を使うと、新しいソート済みリストが返されます。また、降順でソートしたい場合は sort(reverse=True) を指定してください。
-
【Python】再帰を使わない反復型(ボトムアップ)マージソートの実装方法を解説
この記事では、反復処理(イテレーション)のみでマージソートを実装する方法について解説します。再帰呼び出しを使わずに、whileループだけで配列を整列させる「ボトムアップ方式」のアプローチを見ていきましょう。 問題文 問題: 与えられた配列を、反復処理によるマージソートの考え方を用いて昇順に並べ替えてください。 例として、次の整数配列を扱います。 a = [2, 5, 3, 8, 6, 5, 4, 7] 反復マージソートの考え方 通常のマージソートは再帰を使って配列を分割しますが、反復版では最初から要素数1の部分配列として捉え、隣接する部分配列同士を統合(マージ)しながらサイズを倍々に増やしてい
-
Pythonで学ぶ選択ソートの基本原理と実装方法をわかりやすく解説
本記事では、選択ソート(Selection Sort)の基本的な仕組みと、Python 3.xでの実装方法について詳しく解説します。 選択ソートとは? 選択ソートは、ソートされていない部分から最小値の要素を繰り返し見つけ出し、それを先頭に移動させることで配列全体を整列していくアルゴリズムです。処理の過程では、与えられた配列が次の2つの部分配列に分けられます。 すでにソートが完了している部分配列 まだソートされていない部分配列 選択ソートの各イテレーション(反復処理)では、未ソート部分から最小要素を取り出し、ソート済み部分の末尾に挿入していきます。この操作を繰り返すことで、最終的に配列全体