Python でリストを降順で並べ替える

Rayven Esplanada 2022年12月26日
Python でリストを降順で並べ替える

このチュートリアルでは、Python でリストを降順で並べ替える方法を示します。

Python で sort() メソッドを使用してリストを降順で並べ替える

Python には、sort() と呼ばれる組み込み関数があります。この関数は、デフォルトでリストを昇順で並べ替えます。このメソッドは、指定されたリストの内容を単純にソートします。必須のパラメーターはありませんが、オプションのパラメーターがあります。

  • key - 多次元配列内でソートされるインデックスまたは位置を決定します。
  • reverse - True の場合、リストは降順でソートされます。

このメソッドがパラメーターの有無にかかわらずリストをどのようにソートするかを見てみましょう。

  • パラメータなし:
colors = ["pink", "blue", "black", "white"]
colors.sort()

print(colors)

出力:

['black', 'blue', 'pink', 'white']

リストは、単一文字に対応する整数である ASCII 値に基づいて文字列を並べ替えます。比較する両方の文字列の ASCII 値が同じである場合、比較するものがなくなるまで、両方の文字列の次の文字の比較に進みます。

  • reverse パラメーターの使用:
colors = ["pink", "blue", "black", "white"]
colors.sort(reverse=True)
print(colors)

出力:

['white', 'pink', 'blue', 'black']

reverse パラメータを True に設定すると、リストが降順で並べ替えられます。

整数と浮動小数点数の並べ替えは、どちらが大きいか小さいかに基づいて並べ替えられます。別の例で試してみましょう。今回は整数と小数を降順で並べ替えます。

numbers = [55, 6, -0.05, 0.07, 2.5, -7, 2.99, 101, 0.78]
numbers.sort(reverse=True)

print(numbers)

出力:

[101, 55, 6, 2.99, 2.5, 0.78, 0.07, -0.05, -7]

出力から、sort() 関数を使用して数値をソートすると、負の数だけでなく小数も記録されます。

このタイプの並べ替えは、YYYY-MM-DD HH:MM:SS のような形式の日付でも機能します。これを証明する例として、タイムスタンプのリストを使用してみましょう。

timestamps = [
    "2021-04-15 09:08:30",
    "2021-04-14 08:09:38",
    "2021-04-18 12:10:52",
    "2021-04-21 23:39:22",
    "2021-04-13 14:40:22",
    "2021-04-14 13:59:46",
    "2021-04-15 19:22:37",
    "2021-04-18 07:00:58",
    "2021-04-17 04:01:50",
    "2021-04-22 01:17:13",
    "2021-04-25 24:22:13",
    "2021-04-14 25:36:38",
]

timestamps.sort(reverse=True)

print(timestamps)

出力:

['2021-04-25 24:22:13', '2021-04-22 01:17:13', '2021-04-21 23:39:22', '2021-04-18 12:10:52', '2021-04-18 07:00:58', '2021-04-17 04:01:50', '2021-04-15 19:22:37', '2021-04-15 09:08:30', '2021-04-14 25:36:38', '2021-04-14 13:59:46', '2021-04-14 08:09:38', '2021-04-13 14:40:22']

出力が降順で正常にソートされていることを確認し、reverse パラメーターを指定した sort() 関数を使用してタイムスタンプも正しくソートできることを確認します。

要約すると、組み込みの sort() 関数を使用し、reverse パラメーターを True に設定すると、Python リストを降順で並べ替えることができます。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python List