Pythonでタプルのリストを各タプルの最後の要素を基準に昇順ソートする方法
リスト内の各タプルの最後の要素を基準にして、タプルのリストを昇順(小さい順)に並べ替えたいケースはよくあります。本記事では、まずタプルの最後の要素を取得する関数を定義し、その関数をソートのキーとして指定することで並べ替えを実現する方法を解説します。
サンプルコード
def sort_last_elem(num):
return num[-1]
def sort_structure(my_tuple):
return sorted(my_tuple, key=sort_last_elem)
my_list = [(45, 31), (23, 67), (92, 60), (90, 12)]
print("The list is :")
print(my_list)
print("The sorted list of elements is :")
print(sort_structure(my_list))
実行結果
The list is : [(45, 31), (23, 67), (92, 60), (90, 12)] The sorted list of elements is : [(90, 12), (45, 31), (92, 60), (23, 67)]
コードの解説
まず「sort_last_elem」という名前の関数を定義します。この関数は、引数として受け取ったタプルの最後の要素(num[-1])を返します。
次に「sort_structure」という名前の別の関数を定義します。この関数は、Pythonの組み込み関数 sorted() を使用し、key引数に先ほど定義した sort_last_elem 関数を指定することで、タプルのリストを並べ替えた新しいリストを返します。
タプルのリスト「my_list」を定義し、その内容をコンソールに表示します。
sort_structure 関数を呼び出し、引数としてタプルのリストを渡します。
並べ替えられた結果がコンソールに出力されます。最後の要素(12 → 31 → 60 → 67)の昇順に正しく並んでいることが確認できます。
補足:lambda式を使ったより簡潔な書き方
同じ処理は、lambda式(無名関数)を使うことで、専用の関数を定義せずに1行で記述することもできます。
my_list = [(45, 31), (23, 67), (92, 60), (90, 12)] sorted_list = sorted(my_list, key=lambda x: x[-1]) print(sorted_list) # 出力: [(90, 12), (45, 31), (92, 60), (23, 67)]
lambda式は簡単なソート条件を指定する際に便利です。一方、処理内容が複雑になる場合や再利用したい場合は、名前付きの関数を定義する方が可読性が高くなります。状況に応じて使い分けるとよいでしょう。
-
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番目(先頭)の要素をキーとして昇順にソートしています。その結果、先頭の値が小さい順にタプルが並べ替え