Python
のmin
関数は、リストやタプルなどのイテラブル(反復可能なオブジェクト)から最小値を取得したり、複数の引数の中から最小値を返すための組み込み関数です。データ分析やアルゴリズムで最小値を求める操作は頻繁に必要になるため、この関数は非常に便利です。この記事では、min関数の基本的な使い方から応用例、key
パラメータを使ったカスタム条件での最小値取得方法について詳しく解説します。
min関数とは?
min
関数は、イテラブルや複数の値を比較し、最小値を返す組み込み関数です。リスト、タプル、セット、文字列などのシーケンス型に対応しており、数値だけでなく、文字列やカスタムオブジェクトの比較にも使えます。
基本的な構文
min(イテラブル)
min(値1, 値2, ..., key=関数, default=値)
- イテラブル: リスト、タプル、セットなどの反復可能なオブジェクト。
- key: 比較の基準となる関数を指定するオプションパラメータ。
- default: 空のイテラブルを渡したときに返されるデフォルト値(
Python
3.4以降)。
min関数の基本的な使い方
例1: リストの最小値を取得する
リストの中で最も小さな値を取得する方法を見てみましょう。
numbers = [10, 20, 30, 40, 50]
print(min(numbers)) # 出力: 10
この例では、リストnumbers
の中から最小値である10
が返されます。
例2: 複数の引数から最小値を取得する
min関数は複数の引数を直接渡して、その中で最小の値を取得することもできます。
print(min(1, 5, 3, 9, 2)) # 出力: 1
このコードでは、5つの引数の中から最小の1
が返されます。
例3: 文字列の最小値を取得する
文字列リストやタプルの中で、辞書順で最も小さな文字列を取得することもできます。
words = ["apple", "banana", "cherry"]
print(min(words)) # 出力: 'apple'
この場合、apple
が辞書順で最も小さい文字列として選ばれます。
min関数の応用例
例4: key
パラメータを使ったカスタム比較
min関数では、key
パラメータを使うことで特定の条件に基づいて最小値を選ぶことができます。例えば、文字列の長さに基づいて最小の文字列を取得する場合は次のようにします。
words = ["apple", "banana", "cherry"]
shortest_word = min(words, key=len)
print(shortest_word) # 出力: 'apple'
この例では、key=len
を指定して、各文字列の長さに基づいて最も短い文字列を取得しています。
例5: 辞書のリストから最小値を取得する
辞書のリストから、特定のキーに基づいて最小値を取得することも可能です。例えば、以下のようなリストの中から年齢が最も低い人物を見つける場合です。
people = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
youngest = min(people, key=lambda person: person["age"])
print(youngest) # 出力: {'name': 'Bob', 'age': 25}
この例では、lambda
関数を使って各辞書のage
フィールドに基づいて最小値を取得しています。
例6: 空のリストに対する処理
空のリストやイテラブルをmin関数に渡すと、ValueError
が発生します。これを防ぐためには、default
パラメータを設定することで、安全に最小値を取得できます。
empty_list = []
print(min(empty_list, default="デフォルト値")) # 出力: 'デフォルト値'
この例では、empty_list
が空の場合にdefault
で指定したデフォルト値が返されます。
min関数の注意点
データ型が異なると比較できない
min関数は、同じデータ型の要素のみを比較できます。異なるデータ型を混在させると、TypeError
が発生します。
# 以下はエラーになります
print(min(10, "banana", 20))
# TypeError: '<' not supported between instances of 'str' and 'int'
このように、数値と文字列を混在させて比較することはできません。同じデータ型を比較する必要があります。
空のイテラブルに注意
空のリストやタプルなどをmin関数に渡すと、デフォルトではエラーが発生しますが、default
パラメータを指定することでエラーを防ぎ、指定した値を返すことができます。
# 空のリストに対してデフォルト値を返す
print(min([], default="デフォルト値")) # 出力: 'デフォルト値'
default
パラメータを指定しない場合、空のイテラブルを渡すとValueError
が発生します。
文字列の辞書順の比較
min関数は、文字列に対しては辞書順で比較を行います。つまり、アルファベット順に最小値が決定されます。
words = ["apple", "banana", "cherry"]
print(min(words)) # 出力: 'apple'
辞書順での比較は、単純な文字列比較に限らず、数字が含まれる文字列でも同様に扱われます。
min関数と関連する関数
max関数
min
関数の逆に、max
関数は最も大きな値を返します。使い方はmin
と同様です。
numbers = [10, 20, 30, 40, 50]
print(max(numbers)) # 出力: 50
sorted関数
sorted
関数は、イテラブルの要素を昇順または降順に並べ替えます。min
関数で最小値を取得
するのと同様に、並べ替えた結果の最初の要素を取得することで最小値を得ることができます。
numbers = [10, 20, 30, 40, 50]
print(sorted(numbers)) # 出力: [10, 20, 30, 40, 50]
print(sorted(numbers)[0]) # 出力: 10
ただし、min
関数の方が計算量が少なく効率的です。
まとめ
Python
のmin
関数は、リストやタプル、複数の引数から最小値を簡単に取得するための便利なツールです。基本的な使い方に加え、key
パラメータを使うことで、カスタム条件に基づいた最小値の取得も可能です。また、空のリストに対するdefault
パラメータの設定で、エラーを防ぐこともできます。
- 基本的な使い方: リストや複数の引数から最小値を取得する。
- keyパラメータ: カスタム比較条件での最小値取得が可能。
- defaultパラメータ: 空のリストに対してデフォルト値を返す。 最小値を見つけたい場面では、min関数を効果的に活用し、データ処理を効率的に行いましょう。