【Python】リストの並び替え

【Python】リストの並び替え

このページでは、Pythonでのリストの並び替え方法について詳しく解説します。以下の見出しから必要な項目にジャンプできます。

sort()とsorted()の違い

Pythonにはリストを並び替えるための2つの主要なメソッドがあります:sort()sorted()です。

  • sort(): リストのメソッドで、元のリストを直接変更します。返り値はNoneです。
  • sorted(): 組み込み関数で、新しいリストを返します。元のリストは変更されません。

例:

# sort()の例
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # [1, 2, 5, 9]

# sorted()の例
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 5, 9]
print(numbers)         # [5, 2, 9, 1](元のリストはそのまま)

基本的な並び替え

リストはデフォルトで昇順に並び替えられます。

例:

numbers = [4, 1, 7, 3]
numbers.sort()
print(numbers)  # [1, 3, 4, 7]

降順での並び替え

sort()またはsorted()reverse=Trueを指定することで、降順に並び替えられます。

例:

numbers = [4, 1, 7, 3]
numbers.sort(reverse=True)
print(numbers)  # [7, 4, 3, 1]

numbers = [4, 1, 7, 3]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # [7, 4, 3, 1]

カスタムキーによる並び替え

key引数を指定することで、カスタムソートが可能です。

例:文字列の長さで並び替える

words = ["apple", "banana", "kiwi", "cherry"]
words.sort(key=len)
print(words)  # ['kiwi', 'apple', 'cherry', 'banana']

例:絶対値で並び替える

numbers = [-5, 3, -2, 8]
numbers.sort(key=abs)
print(numbers)  # [-2, 3, -5, 8]

複数条件での並び替え

複数条件で並び替える場合、keyにタプルを指定します。

例:文字列の長さ、同じ長さならアルファベット順で並び替える

words = ["apple", "kiwi", "banana", "cherry", "fig"]
words.sort(key=lambda x: (len(x), x))
print(words)  # ['fig', 'kiwi', 'apple', 'cherry', 'banana']

複雑な構造のデータを並び替える

辞書やタプルなどの複雑な構造のデータも並び替え可能です。

例:辞書のリストを特定のキーで並び替える

students = [
    {"name": "Alice", "score": 90},
    {"name": "Bob", "score": 85},
    {"name": "Charlie", "score": 95},
]
students.sort(key=lambda x: x["score"])
print(students)
# [{'name': 'Bob', 'score': 85}, {'name': 'Alice', 'score': 90}, {'name': 'Charlie', 'score': 95}]

並び替え後の元データ保持

元のリストを変更せず、新しいリストを作成したい場合はsorted()を使用します。

例:

numbers = [10, 3, 8, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 3, 8, 10]
print(numbers)         # [10, 3, 8, 1]

これらの方法を活用することで、リストの並び替えを柔軟に行うことができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です