【Python】Pythonでソートする方法
投稿日 :
Tags:
Python
前提
Python: 3.12
Pythonにおけるソートの基礎: sort()
vs sorted()
Pythonでソートを行うには、主にsort()
とsorted()
の2つの関数が利用できる。
sort()
関数: リストを直接変更する
sort()
関数は、リストに直接変更を加えてソートを行う。この関数は、元のリストを破壊的に変更するため、ソート後のリストが必要な場合は注意が必要だ。
numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers) # 出力: [1, 2, 3, 4]
sorted()
関数: 新しいリストを作成する
sorted()
関数は、元のリストを変更せずに、ソートされた新しいリストを返す。元のリストを保持したい場合に便利だ。
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力: [1, 2, 3, 4]
print(numbers) # 出力: [3, 1, 4, 2]
ソートをカスタマイズする: key
とreverse
sort()
関数とsorted()
関数は、key
とreverse
という2つの引数を受け取り、ソート動作をカスタマイズすることができる。
key
: ソート基準を指定する
key
引数は、ソートの基準となる関数を指定する。デフォルトでは、要素自体が比較対象となるが、key
引数を使用することで、要素の特定の属性や計算結果に基づいてソートすることができる。
words = ['apple', 'banana', 'cherry']
words.sort(key=len) # 文字列の長さでソート
print(words) # 出力: ['apple', 'cherry', 'banana']
reverse
: 昇順/降順を切り替える
reverse
引数は、ソート順を反転させる。デフォルトはFalse
で昇順、True
を指定することで降順になる。
numbers = [3, 1, 4, 2]
numbers.sort(reverse=True) # 降順にソート
print(numbers) # 出力: [4, 3, 2, 1]
高度なソートテクニック: lambda
式とタプル
より複雑なソート条件を実現するために、lambda
式やタプルを活用することができる。
lambda
式: 無名関数で簡潔に記述
lambda
式を使うと、関数をその場で定義することができる。key
引数と組み合わせて、簡潔な記述でソート条件を指定できる。
students = [
{'name': 'Alice', 'age': 20},
{'name': 'Bob', 'age': 18},
{'name': 'Charlie', 'age': 22},
]
students.sort(key=lambda x: x['age']) # 年齢でソート
print(students)
タプル: 複数条件でのソート
タプルを使うと、複数の条件でソートを行うことができる。Pythonは、タプルの要素を順番に比較していくため、第一条件で同じ値を持つ要素は、第二条件で比較される。
products = [
('Apple', 100),
('Banana', 50),
('Cherry', 100),
]
products.sort(key=lambda x: (x[1], x[0])) # 価格でソート、同じ場合は名前でソート
print(products)
関連記事
-
【Python】入力を受け付ける方法 input()関数の使い方前提 Python: 3.12 input()関数の基本的な使い方 input()関数の基本的な使い方は非常にシンプルだ。関数を呼び出すだけで、プログラムの実行が一時
-
【Python】importの仕方前提 Python: 3.12 1. importの基本 まずは、importの基本的な使い方について確認しよう。 Pythonでは、以下のように記述することでモジュールを
-
【Python】pipの使い方前提 Python: 3.12 pipとは? Pythonパッケージ管理の強い味方 pipは、Package Installer for Pythonの略称であり、Pythonのパッケージをイン
-
【Jinja2】for文の中で使えるloopについて前提 Python: 3.12 Jinja2: 3.1.3 参考 List of Control Structures — Template Designer Documentation — Jinja Documentation (3.1.x) Jinja2のloop変数とは Jinja2のloop変数は、for文などのループ処理内で自動的に生成
-
【Python】文字列メソッドの使い方前提 Python: 3.12 参考 文字列メソッド — 組み込み型 — Python 3.12.3 ドキュメント Pythonの文字列メソッド Pythonを使いこなす上で、文字列処理は避けて通れない