本記事では、Pythonで配列の最大値、最小値を求める方法を解説します。組み込み関数のmax、minを使用すると簡単に求めることができるため、これらの関数の使い方を説明します。
min、maxの基本的な使い方
Pythonには配列の最大値、最小値を取得するための組み込み関数max、minがあります。どちらもリストやタプルなどの イテラブル なデータを引数に取り、その中で最も大きい(または小さい)要素を返します。
構文
max関数とmin関数は以下の構文で使用します。iterableは最大値または最小値を求めるリストやタプルなどのイテラブルオブジェクトです。keyパラメータは要素を比較する際の基準となる関数を指定でき、defaultパラメータは空のイテラブルを渡した場合に返される値を指定します。defaultを指定しない場合、空のイテラブルを渡すとValueErrorが発生します。
max(iterable, *, key=None, default=None) -> 最大値
min(iterable, *, key=None, default=None) -> 最小値
使用例
数値リストの最大値と最小値
最も基本的な使い方として、数値のリストから最大値と最小値を取得する例です。
numbers = [5, 2, 9, 1, 7]
print(max(numbers)) # 9
print(min(numbers)) # 1
文字列リストの最大値と最小値
文字列のリストでは、アルファベット順(辞書順)で比較されます。
fruits = ["apple", "orange", "banana"]
print(max(fruits)) # orange(アルファベット順で最も後ろ)
print(min(fruits)) # apple(アルファベット順で最も前)
タプルでの使用例
タプルでも同様に使用できます。
coordinates = [(1, 2), (3, 0), (2, 5)]
print(max(coordinates)) # (3, 0)(最初の要素で比較され、同じ場合は次の要素で比較)
print(min(coordinates)) # (1, 2)
辞書での使用例
辞書をそのまま渡すと、キーに対して比較が行われます。
scores = {"Alice": 85, "Bob": 92, "Charlie": 78}
print(max(scores)) # Charlie(キーの中で最大)
print(min(scores)) # Alice(キーの中で最小)
# 値で比較したい場合はキーを指定
print(max(scores, key=scores.get)) # Bob(値が最大のキー)
print(min(scores, key=scores.get)) # Charlie(値が最小のキー)
複数の引数を直接渡す例
イテラブルではなく、複数の引数を直接渡すこともできます。
print(max(10, 5, 20, 15)) # 20
print(min(10, 5, 20, 15)) # 5
応用例
max関数とmin関数は基本的な使い方に加えて、さまざまな応用が可能です。ここでは特に便利なkey引数とdefault引数の使用例を紹介します。
keyパラメータを使った比較
key引数を指定することで、要素を変換した後に比較を行うことができます。これにより、より柔軟な比較が可能になります。
# 文字列の長さで比較する例
words = ["apple", "orange", "banana"]
print(max(words, key=len)) # orange(最も長い)
print(min(words, key=len)) # apple(最も短い)
# 絶対値で比較する例
numbers = [-5, 2, -9, 1, -7]
print(max(numbers, key=abs)) # -9(絶対値が最大)
print(min(numbers, key=abs)) # 1(絶対値が最小)
辞書の値で比較
辞書の値に基づいて比較したい場合も、keyパラメータを活用できます。
students = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# 成績が最高の生徒を取得
top_student = max(students, key=students.get)
print(top_student) # Bob
# 成績が最低の生徒を取得
bottom_student = min(students, key=students.get)
print(bottom_student) # Charlie
defaultパラメータの使用例
default引数を設定することで、空のイテラブルを渡した際にエラーを回避し、デフォルト値を返すことができます。
# 空リストの場合
empty_list = []
print(max(empty_list, default="データなし")) # データなし
print(min(empty_list, default="データなし")) # データなし
# 条件に合う要素がない場合
numbers = [1, 3, 5, 7, 9]
# 偶数の最大値(条件に合う要素がないのでデフォルト値が返される)
print(max((n for n in numbers if n % 2 == 0), default="偶数なし")) # 偶数なし
まとめ
Pythonのmax関数とmin関数は、データから最大値と最小値を簡単に取得できる組み込み関数です。この記事で解説した内容をまとめると以下のようになります。
- Pythonの組み込み関数max、minを使うと配列の最大値、最小値を簡単に取得できる
- 数値リスト、文字列リスト、タプル、辞書など様々なデータ型に対応している
- 辞書に対して使用する場合、デフォルトではキーで比較されるが、key引数を使うことで値での比較も可能
- key引数を使うことで、要素を変換した後に比較できるため、文字列の長さや絶対値など、カスタマイズした比較基準を設定できる
- default引数を設定することで、空のイテラブルや条件に合う要素がない場合でも安全に処理できる
- 複数の引数を直接渡すこともでき、イテラブル以外でも使用可能
これらの機能を活用することで、データの分析や処理が効率化され、コードもシンプルになります。特にkey引数を使いこなすことで、複雑なソートやフィルタリングの処理も簡潔に記述できるようになるでしょう。