Pythonのmax()関数を徹底解説!最大値の取得と活用法
Pythonでプログラミングをしていると、データの集まりの中から「最も大きな値」を見つけ出したい場面は頻繁にあります。例えば、テストの最高得点、商品の最高価格、センサーデータの最大値などです。このようなときに活躍するのが、Pythonの組み込み関数である**max()
関数**です。この記事では、max()
関数の基本的な使い方から、複数の引数やカスタムキーを使った応用的な活用法までを初心者にもわかりやすく解説しますします。
max()
関数とは?Pythonにおける最大値の取得
Pythonのmax()
関数は、与えられた要素の中から最大の(最も大きな)値を返す組み込み関数です。数値だけでなく、文字列や他の比較可能なオブジェクトにも適用できます。
基本的な使い方:2つの主な形式
max()
関数には、大きく分けて2つの使い方があります。
1. 複数の引数の中から最大値を取得
カンマで区切って複数の引数を渡すと、その中から最も大きな値が返されます。
# 数値の中から最大値
print(max(10, 50, 20, 30)) # 出力: 50
# 浮動小数点数の中から最大値
print(max(3.14, 2.71, 9.81)) # 出力: 9.81
# 文字列の中から最大値 (辞書順で比較)
print(max("apple", "banana", "cherry")) # 出力: cherry ('c' が 'a', 'b' より後)
print(max("Python", "Java", "C++")) # 出力: Python ('P' が 'J', 'C' より後)
注意点: 比較できない型の混在(例:数値と文字列)はTypeError
になります。
# print(max(10, "hello")) # TypeError: '>' not supported between instances of 'str' and 'int'
2. イテラブル(リスト、タプルなど)の中から最大値を取得
リスト、タプル、セットなどのイテラブルオブジェクトを1つ引数に渡すと、そのイテラブルの要素の中から最大の値を返します。
# リストの中から最大値
scores = [85, 92, 78, 95, 88]
print(max(scores)) # 出力: 95
# タプルの中から最大値
temperatures = (25.5, 28.1, 23.9, 27.0)
print(max(temperatures)) # 出力: 28.1
# 空のイテラブルを渡すとValueError
# print(max([])) # ValueError: max() arg is an empty sequence
max()
関数の応用的な活用事例
max()
関数は、単に最大値を見つけるだけでなく、key
引数を使うことで、より複雑な条件に基づいて最大値を特定できます。
1. key
引数を使ったカスタム比較
key
引数には、イテラブルの各要素に適用される関数を指定します。max()
はこの関数の戻り値を比較して最大値を決定し、元の要素を返します。
文字列の長さで比較
words = ["apple", "banana", "kiwi", "grapefruit"]
# 文字列の長さが最大のものを取得
longest_word = max(words, key=len)
print(f"最も長い単語: {longest_word}") # 出力: 最も長い単語: grapefruit
オブジェクトの特定の属性で比較
オブジェクトのリストから、特定の属性値が最大のオブジェクトを見つけ出す場合に非常に便利です。
class Product:
def __init__(self, name, price, stock):
self.name = name
self.price = price
self.stock = stock
def __repr__(self): # print()で表示する際のフォーマット
return f"Product(name='{self.name}', price={self.price}, stock={self.stock})"
products = [
Product("Laptop", 1200, 50),
Product("Mouse", 25, 200),
Product("Keyboard", 75, 100),
Product("Monitor", 300, 30)
]
# 最も価格が高い商品を見つける
most_expensive_product = max(products, key=lambda p: p.price)
print(f"最も高価な商品: {most_expensive_product}")
# 出力: 最も高価な商品: Product(name='Laptop', price=1200, stock=50)
# 最も在庫が多い商品を見つける
most_stocked_product = max(products, key=lambda p: p.stock)
print(f"最も在庫が多い商品: {most_stocked_product}")
# 出力: 最も在庫が多い商品: Product(name='Mouse', price=25, stock=200)
絶対値で比較
数値のリストから、絶対値が最大のものを取得することもできます。
numbers = [-10, 5, -8, 2, 7]
max_abs_number = max(numbers, key=abs)
print(f"絶対値が最大の数: {max_abs_number}") # 出力: 絶対値が最大の数: -10
2. default
引数(Python 3.4以降)
イテラブルが空の場合にValueError
を避けるために、default
引数を指定できます。イテラブルが空であれば、default
で指定した値が返されます。
empty_list = []
# max(empty_list) # これだとValueError
print(max(empty_list, default=0)) # 出力: 0
data = [1, 2, 3]
print(max(data, default=0)) # 出力: 3 (通常通り最大値が返される)
max()
関数と関連する関数
min()
関数
min()
関数はmax()
関数と対照的に、与えられた要素の中から最小の(最も小さな)値を返します。使い方はmax()
と全く同じです。
print(min(10, 50, 20)) # 出力: 10
print(min([85, 92, 78, 95])) # 出力: 78
sorted()
関数
sorted()
関数は、イテラブルの要素をソートした新しいリストを返します。max()
と同様にkey
引数を持つため、複雑なソート条件を設定できます。最大値だけでなく、全体をソートしたい場合に便利です。
words = ["apple", "banana", "kiwi", "grapefruit"]
sorted_by_len = sorted(words, key=len)
print(f"長さでソート: {sorted_by_len}") # 出力: 長さでソート: ['kiwi', 'apple', 'banana', 'grapefruit']
まとめ
Pythonのmax()
関数は、数値、文字列、オブジェクトなど、さまざまなデータの中から最大の値を効率的に見つけ出すための非常に便利な組み込み関数です。単に最大値を取得するだけでなく、key
引数と組み合わせることで、カスタムの比較基準に基づいて複雑なデータ構造から特定の最大要素を抽出する強力なツールとなります。
max()
関数は、複数の引数またはイテラブルの中から最大の値を返します。比較可能な型であれば、数値以外(文字列など)も扱えます。
key
引数を使うことで、カスタムの比較基準(例: 長さ、オブジェクトの属性、絶対値など)を設定できます。空のイテラブルによる
ValueError
を避けるためにdefault
引数を利用できます。対になる
min()
関数や、ソートを行うsorted()
関数も併せて理解しておくと良いでしょう。
この関数を理解し適切に活用することで、Pythonでのデータ分析やアルゴリズムの実装がよりスムーズになるでしょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座