【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]
これらの方法を活用することで、リストの並び替えを柔軟に行うことができます。