Pythonでタプルのリストを各タプルの最後の要素を基準に昇順ソートする方法
タプルのリストを、各タプルの最後の要素を基準として昇順に並べ替えたい場合があります。本記事では、リストを反復処理しながら要素を入れ替える(スワップする)独自のメソッドを定義し、この並べ替えを実現する方法を解説します。
サンプルコード
以下は、バブルソートの考え方を用いてタプルのリストを並べ替えるPythonコードの例です。
def sort_tuple(my_tup):
my_len = len(my_tup)
for i in range(0, my_len):
for j in range(0, my_len-i-1):
if (my_tup[j][-1] > my_tup[j + 1][-1]):
temp = my_tup[j]
my_tup[j] = my_tup[j + 1]
my_tup[j + 1] = temp
return my_tup
my_tuple = [(1, 92), (34, 25), (67, 89)]
print("The tuple is :")
print(my_tuple)
print("The sorted list of tuples are : ")
print(sort_tuple(my_tuple))
実行結果
The tuple is : [(1, 92), (34, 25), (67, 89)] The sorted list of tuples are : [(34, 25), (67, 89), (1, 92)]
コードの解説
sort_tuple という名前のメソッドを定義し、タプルのリストを引数として受け取ります。
リストを二重ループで反復処理し、隣り合うタプル同士の最後の要素(
my_tup[j][-1])を比較します。インデックス-1を指定することで、各タプルの末尾の要素にアクセスできます。前のタプルの最後の要素が次のタプルの最後の要素より大きい場合、一時変数
tempを使って2つのタプルを入れ替えます。すべての比較と入れ替えが完了したら、並べ替え済みのタプルのリストを戻り値として返します。
メソッドの外側でタプルのリスト
my_tupleを定義し、その内容をコンソールに表示します。このリストを引数として sort_tuple メソッドを呼び出し、ソート結果をコンソールに出力します。
実行結果を見ると、元のリスト [(1, 92), (34, 25), (67, 89)] が、各タプルの最後の要素(92、25、89)に基づいて [(34, 25), (67, 89), (1, 92)] の順に並べ替えられていることが確認できます。
補足:sorted()関数を使ったより簡潔な方法
実際の開発では、Pythonの組み込み関数 sorted() と key 引数を組み合わせることで、同じ処理を1行で簡潔に記述できます。
my_tuple = [(1, 92), (34, 25), (67, 89)] sorted_tuple = sorted(my_tuple, key=lambda x: x[-1]) print(sorted_tuple)
key=lambda x: x[-1] により、「各タプルの最後の要素」をソートの基準として指定しています。こちらの方法の方が可読性が高く、パフォーマンスにも優れているため、特別な理由がない限り sorted() 関数の利用をおすすめします。
-
Pythonでリストから「数値とその3乗」を含むタプルのリストを作成する方法
この記事では、指定された問題文に対する解決策とそのアプローチについて詳しく解説します。問題文リストが入力として与えられたとき、各要素の数値とその3乗(キューブ)をペアにしたタプルのリストを作成する必要があります。解決アプローチこの問題は、Pythonのリスト内包表記を使うことで、簡潔かつ効率的に解くことができます。以下に、インライン実装による具体的な解法を示します。コード例list1 = [0,1,2,4,6] res = [(val, pow(val, 3)) for val in list1] # main print(res)出力結果[(0, 0), (1, 1), (2, 8), (4
-
タプルを任意のキーで昇順にソートするPythonプログラム
タプルのリストが与えられたとき、任意の要素(キー)を基準として昇順に並べ替えることを考えます。この処理にはPython組み込みのsorted()関数を使用し、key引数に「どのインデックスの値で比較するか」を返す関数を渡すことで、指定したキーに従ったソートを実現します。 例 入力: A = [(2, 55), (1, 20), (4, 40), (2, 30)] k = 0 出力: [(1, 20), (2, 30), (2, 55), (4, 40)] この例では、各タプルの0番目(先頭)の要素をキーとして昇順にソートしています。その結果、先頭の値が小さい順にタプルが並べ替え