Pythonでリスト内の最大値を求めるには、組み込み関数のmax()を使います。
自分で数値を一つずつ比較する必要はありません。最大値を知りたいリストをmax()に渡すだけで取得できます。
この記事では、max()の基本的な使い方に加え、最大値がある位置の調べ方や、空のリストを扱うときの注意点も解説します。
max()でリストの最大値を求める
基本的な書き方は次のとおりです。
numbers = [12, 35, 8, 27, 19]
largest = max(numbers)
print(largest)実行結果は次のようになります。
35
max(numbers)は、numbersに含まれる要素を比較し、その中で最も大きい値を返します。
Pythonでリストの最大値を求めるなら、基本的にはmax()を使うのが最も簡単です。
max()はどのように最大値を見つけるのか
max()は、リスト内の数値を比較して最大値を探します。
考え方としては、最初の数値を一時的な最大値とし、次の数値がそれより大きければ最大値を入れ替えていくイメージです。
先ほどのリストなら、比較は次のように進みます。
- 最初は
12を最大値とする 35の方が大きいため、最大値を35に変更する- 残りの
8、27、19は35より小さい - 最終的に
35が返される
実際にこの処理を自分で書く必要はありませんが、仕組みを知っておくと、なぜmax()だけで最大値が求められるのか理解しやすくなります。
小数や負の数が含まれていても使える
max()は、整数だけでなく小数や負の数にも使えます。
numbers = [-8.5, -2.1, -10.0, -4.7]
largest = max(numbers)
print(largest)実行結果は次のとおりです。
-2.1
負の数では、0に近い数ほど大きな値です。そのため、この例では-2.1が最大値になります。
「最大値=正の数」とは限らない点は、初心者が勘違いしやすいところです。
最大値がある位置を調べる
最大値そのものではなく、リストの何番目にあるのかを調べたい場合は、max()とindex()を組み合わせます。
numbers = [12, 35, 8, 27, 19]
largest = max(numbers)
position = numbers.index(largest)
print(largest)
print(position)実行結果は次のとおりです。
35
1
Pythonでは、要素の位置を表すインデックスを0から数えます。そのため、2番目にある35のインデックスは1です。
同じ最大値が複数ある場合、index()で取得できるのは最初に見つかった位置です。
たとえば、[10, 30, 20, 30]では最大値は30ですが、取得されるインデックスは最初の30がある1になります。
空のリストではエラーになる
要素が一つもない空のリストにmax()を使うと、ValueErrorが発生します。
numbers = []
print(max(numbers))最大値は、比較する要素があって初めて決められます。
空のリストには比較対象がないためです。
リストが空になる可能性がある場合は、先に要素が入っているか確認します。
numbers = []
if numbers:
print(max(numbers))
else:
print("リストが空です")Pythonでは、要素のあるリストは条件式でTrue、空のリストはFalseとして扱われます。そのため、if numbers:で空かどうかを簡潔に判定できます。
まとめ
Pythonでリストの最大値を求めるには、組み込み関数のmax()を使います。
largest = max(numbers)最大値の位置も必要なら、index()を組み合わせます。
position = numbers.index(max(numbers))ただし、空のリストにmax()を使うとValueErrorが発生します。リストが空になる可能性がある処理では、if numbers:で確認してから使いましょう。

