Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで各要素の桁の合計に基づいてリストを並べ替える方法

Pythonでは、リストの各要素を「桁の数字」に基づいて並べ替えたいケースがあります。たとえば、各数値の桁の合計が小さい順にソートしたい場合などです。このようなときは、独自の関数を定義し、リスト内包表記と組み込み関数 sum() を組み合わせることで、簡単に実現できます。

サンプルコード

以下は、桁の合計に基づいてリストを並べ替える具体的な例です。

def sort_list_digit(my_list):
   digits = [int(digit) for digit in str(my_list)]
   return sum(digits)

my_list = [124, 20, 106, 35, 44]

print("The list is :")
print(my_list)

print("The result is :")
print(sorted(my_list, key=sort_list_digit))

実行結果

The list is :
[124, 20, 106, 35, 44]
The result is :
[20, 124, 106, 35, 44]

コードの解説

  • まず、sort_list_digit という名前の関数を定義します。この関数は引数として1つの数値を受け取ります。
  • 関数内では、リスト内包表記を使って数値を文字列に変換し、その各文字(桁)を再び整数型 int に変換しています。
  • その後、sum() 関数によって各桁の合計値を計算し、戻り値として返します。たとえば 124 なら 1 + 2 + 4 = 7 となります。
  • 関数の外側では、整数のリスト [124, 20, 106, 35, 44] を定義し、コンソールに表示します。
  • 組み込み関数 sorted() を呼び出す際、key 引数に先ほど定義した関数を指定することで、「桁の合計」を基準とした並べ替えが行われます。
  • 各要素の桁の合計は、20 → 2、124 → 7、106 → 7、35 → 8、44 → 8 となるため、結果は [20, 124, 106, 35, 44] の順に出力されます。

ポイントまとめ

sorted()list.sort()key 引数に関数を渡すことで、任意の基準によるカスタムソートが可能になります。桁の合計以外にも、絶対値や文字列の長さなど、さまざまな条件でソートしたい場合に応用できるテクニックです。

  1. Pythonでリストの要素をランダムにシャッフルする方法

    random.shuffle()関数を使ったリストのシャッフルPythonの標準ライブラリにはrandomモジュールが用意されており、その中のshuffle()関数を使うと、シーケンス(リストなど)の要素をランダムな順序に入れ替えることができます。重要なポイントとして、shuffle()は元のリストを直接(in-place)並べ替えます。戻り値はNoneであるため、シャッフル後の結果を確認するには、元のリスト変数そのものを参照します。基本的な使い方>>> import random >>> l1 = [aa, 22, ff, 15, 90, 5.55] &g

  2. Pythonでリストを並べ替える方法を解説!sortとsortedの使い分けからkey引数まで

    Pythonでは、整数・浮動小数点数・文字列などのリストは、sortメソッドを呼び出すだけで簡単に並べ替えができます。また、降順(逆順)でソートしたい場合は、reverseパラメータにTrueを指定するだけです。sortメソッドを使った基本的な並べ替えまずは、昇順と降順それぞれのソート例を見てみましょう。my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)出力結果[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]このように、sort()を呼び