Pythonでタプルのリストを2番目の要素を基準にソートする方法
タプルのリストを2番目の要素(インデックス1)を基準にソートしたい場合、lambda関数とsortedメソッドを組み合わせることで簡単に実現できます。
リストは、整数、浮動小数点数、文字列など、異なるデータ型の値を混在させて格納できる柔軟なデータ構造です。タプルのリストとは、複数のタプルがリストの中に格納されたものを指します。
lambda関数(無名関数)とは
無名関数(匿名関数)は、名前を持たずに定義される関数です。通常、Pythonの関数は「def」キーワードを使って定義しますが、無名関数は「lambda」キーワードを使用して定義します。
lambda関数は1つの式のみを受け取りますが、引数は任意の数を指定できます。受け取った式を評価し、その結果を戻り値として返します。
一方、「sorted」メソッドは、リストの要素を並べ替えるために使用される組み込み関数です。key引数に関数を指定することで、任意の基準に従ってソートを行うことができます。
サンプルコード
以下に、タプルのリストを2番目の要素でソートする具体例を示します。
def tuple_sort(my_tuple):
return(sorted(my_tuple, key = lambda x: x[1]))
my_tuple = [('bill', 11), ('rick', 45), ('john', 89), ('liv', 25)]
print("The list of tuple is : ")
print(my_tuple)
print("After sorting, the list of tuple becomes : ")
print(tuple_sort(my_tuple))
実行結果
The list of tuple is :
[('bill', 11), ('rick', 45), ('john', 89), ('liv', 25)]
After sorting, the list of tuple becomes :
[('bill', 11), ('liv', 25), ('rick', 45), ('john', 89)]
コードの解説
- 「tuple_sort」という名前の関数を定義し、タプルのリストを引数として受け取ります。
- lambda関数
x: x[1]をkeyとして指定することで、各タプルの2番目の要素(数値)を比較基準とし、「sorted」関数で昇順にソートします。 - ソート済みのリストを戻り値として返します。
- ソート前のタプルのリストを定義し、コンソールに表示します。
- このタプルのリストを引数として「tuple_sort」メソッドを呼び出します。
- ソート後の結果がコンソールに出力されます。
実行結果からわかるように、元のリストは2番目の要素である数値(11, 45, 89, 25)を基準に昇順へと並べ替えられています。降順でソートしたい場合は、「sorted」関数に reverse=True を追加するだけで対応できます。
-
Pythonでサイクルソートを実装する方法
この記事では、次の問題に対する解決策をわかりやすく解説していきます。問題文配列が与えられたとき、サイクルソート(Cycle Sort)の考え方を用いてその配列をソートします。サイクルソートはインプレース(in-place)アルゴリズムの一種で、要素の入れ替え(スワップ)を「サイクル(循環)」を形成する形で行うのが大きな特徴です。理論上の書き込み回数が最小となるよう設計されているため、メモリへの書き込みコストが高い環境で特に有用とされるアルゴリズムです。それでは、以下の実装例で具体的な解決策を見ていきましょう。実装例def cycleSort(array): writes = 0
-
サブリストの2番目の要素を基準にリストをソートするPythonプログラム
ネストされたリスト(リストの中にリストが入っている構造)が与えられたとき、各サブリストの2番目の要素を基準にして全体を並べ替えるのが本記事の目的です。ここでは、最も基本的なソートアルゴリズムである「バブルソート」を使った実装方法を解説します。 実行例 入力 : [[CCC, 15], [AAA, 10], [RRRR, 2],[XXXX, 150]] 出力 : [[RRRR, 2], [AAA, 10], [CCC, 15], [XXXX, 150]] アルゴリズムの手順 ステップ1:対象となるリストを受け取る。 ステップ2:ネストされたループを使い、サブリストの2番目の要素にアクセスできるよ