Pythonでリストの要素を「最大の数字」を基準に並べ替える方法
Pythonでは、リスト内の各要素に含まれる最大の数字を基準にして並べ替えたい場面があります。そのような場合、str関数とmax関数を組み合わせた独自のメソッドを定義することで、簡単に実現できます。
ここでは、具体的な実装方法と動作の仕組みを詳しく解説します。
サンプルコード
def max_digits(element):
return max(str(element))
my_list = [224, 192, 145, 18, 3721]
print("元のリスト:")
print(my_list)
my_list.sort(key=max_digits)
print("並べ替え後の結果:")
print(my_list)
実行結果
元のリスト: [224, 192, 145, 18, 3721] 並べ替え後の結果: [224, 145, 3721, 18, 192]
コードの解説
max_digits関数の定義: 引数として受け取った要素を
str()で文字列に変換し、その文字列に対してmax()を適用します。これにより、各桁の数字の中で最も大きい値が返されます。例えば、224の場合は「4」が返されます。リストの定義と表示: 関数の外側で整数のリスト
my_listを定義し、コンソールに出力して確認できるようにしています。sortメソッドによる並べ替え:
sort()メソッドのkey引数に先ほど定義したmax_digits関数を指定します。これにより、各要素は「含まれる最大の数字」の順序に従って並べ替えられます。結果の出力: 並べ替えられたリストがコンソールに表示されます。
並べ替えの仕組みを詳しく見る
各要素がどのように評価されるかを整理すると、以下のようになります。
224 → 最大の数字は 4
145 → 最大の数字は 5
3721 → 最大の数字は 7
18 → 最大の数字は 8
192 → 最大の数字は 9
この評価値(4, 5, 7, 8, 9)に基づいて昇順に並べ替えられるため、結果は [224, 145, 3721, 18, 192] となります。
まとめ
sort()メソッドのkey引数に関数を渡すことで、通常の数値順とは異なる柔軟な並べ替え基準を実現できます。文字列変換とmax()を組み合わせるテクニックは、桁ごとの比較が必要なさまざまな場面で応用可能です。
-
Pythonでバブルソートを実装する方法をわかりやすく解説
この記事では、代表的なソートアルゴリズムの一つである「バブルソート(Bubble Sort)」をPythonで実装する方法について詳しく解説します。 下図は、このアルゴリズムがどのように動作するかを示したものです。 アルゴリズムの手順 先頭の要素(インデックス = 0)から開始し、現在の要素と配列内の次の要素を比較します。 現在の要素が次の要素より大きい場合、両者を入れ替えます。 現在の要素が次の要素より小さい場合は、そのまま次の要素へ移動します。 この手順を、配列全体がソートされるまで繰り返します。 それでは、実際の実装を見てみましょう。 サンプルコード def bubbleSort(
-
Pythonでfloat要素を基準にタプルをソートする方法
この記事では、float型の数値を含むタプルのリストを、その数値を基準にソートする方法を解説します。Pythonの組み込み関数 sorted() を使った方法を中心に、key 引数や reverse 引数の使い方もあわせて紹介します。実行例たとえば、名前と数値(文字列形式)のペアからなるタプルのリストを、数値が大きい順に並べ替えるケースを考えてみましょう。入力: tuple = [(AAA, 10.265), (BBB, 24.107), (CCC, 26.541), (DDD, 14.256), (EEE, 11.365)] 出力: [(CCC, 26.541), (BBB, 24.107