Pythonでリスト内の最小値を求めるには、組み込み関数のmin()を使います。
リストの数値を自分で並べ替えたり、一つずつ比較したりする必要はありません。最小値を調べたいリストをmin()に渡すだけで取得できます。
この記事では、min()の基本的な使い方に加え、最小値がある位置の調べ方や、空のリストを扱うときの注意点も解説します。
min()でリストの最小値を求める
基本的な書き方は次のとおりです。
numbers = [12, 5, 28, 9, 17]
smallest = min(numbers)
print(smallest)実行結果は次のようになります。
5
min(numbers)は、numbersに含まれる要素を比較し、その中で最も小さい値を返します。
Pythonでリストの最小値を求めるなら、min()を使うのが最も簡単です。
min()はどのように最小値を見つけるのか
min()は、リストの中身を比較しながら最も小さい値を探します。
考え方としては、最初の数値を一時的な最小値とし、それより小さい数値が見つかったら入れ替えていくイメージです。
先ほどのリストでは、次のように比較されます。
- 最初は
12を最小値とする 5の方が小さいため、最小値を5に変更する- 残りの
28、9、17は5より大きい - 最終的に
5が返される
実際のプログラムでは、この比較処理を自分で書く必要はありません。min()がリスト全体を確認して結果を返してくれます。
小数や負の数にも使える
min()は、整数だけでなく小数や負の数にも使えます。
numbers = [-3.5, -8.2, -1.4, -6.0]
smallest = min(numbers)
print(smallest)実行結果は次のとおりです。
-8.2
負の数では、0から離れている数の方が小さくなります。そのため、この例では-8.2が最小値です。
「数字の見た目が大きいから-8.2の方が大きい」と考えないように注意しましょう。数直線で考えると、左側にある数ほど小さい値です。
最小値がある位置を調べる
最小値そのものではなく、リストの何番目にあるのかを調べたい場合は、min()とindex()を組み合わせます。
numbers = [12, 5, 28, 9, 17]
smallest = min(numbers)
position = numbers.index(smallest)
print(smallest)
print(position)実行結果は次のとおりです。
5
1
Pythonでは、要素の位置を表すインデックスを0から数えます。5はリストの2番目にありますが、インデックスは1です。
同じ最小値が複数ある場合、index()で取得できるのは最初に見つかった位置です。
たとえば、[8, 3, 6, 3]では最小値は3ですが、取得されるインデックスは最初の3がある1になります。
空のリストではエラーになる
要素が一つもない空のリストにmin()を使うと、ValueErrorが発生します。
numbers = []
print(min(numbers))空のリストには比較できる要素がないため、最小値を決められません。
リストが空になる可能性がある場合は、要素が入っているか確認してからmin()を使います。
numbers = []
if numbers:
print(min(numbers))
else:
print("リストが空です")Pythonでは、要素のあるリストは条件式でTrue、空のリストはFalseとして扱われます。そのため、if numbers:で簡潔に確認できます。
まとめ
Pythonでリストの最小値を求めるには、組み込み関数のmin()を使います。
smallest = min(numbers)最小値の位置も必要な場合は、index()を組み合わせます。
position = numbers.index(min(numbers))ただし、空のリストにmin()を使うとValueErrorが発生します。リストが空になる可能性がある処理では、if numbers:で確認してから使いましょう。

