Pythonでプログラミングをしていると、数値のリスト(配列)から合計値や、一番大きい・小さい値を探したい場面がよくあります。
forループを使って自分で計算ロジックを書くこともできますが、Pythonにはもっとスマートな方法が用意されています。それが、今回紹介する組み込み関数 sum(), min(), max() です。
この記事を読めば、これらの便利な関数の基本的な使い方から、少し応用的なテクニックまで理解でき、あなたの書くコードがよりシンプルで読みやすくなります。
はじめに:面倒な数値計算はPythonの組み込み関数におまかせ
この記事でわかること
sum()関数でリストなどの合計値を簡単に計算する方法min()関数で最小値を、max()関数で最大値を素早く見つける方法key引数を使った少し応用的な使い方
これらの関数はPythonに標準で備わっているため、特別なライブラリをインストールする必要はありません。Pythonのバージョンに関わらず、いつでもすぐに使える強力なツールです。早速、それぞれの使い方を見ていきましょう。
sum()関数:リストやタプルの合計値を一瞬で計算する
sum()関数は、リストやタプルのような「イテラブル(繰り返し可能なオブジェクト)」に含まれる数値の合計を計算します。
基本的な使い方:sum(iterable)
sum()の最も基本的な使い方は、引数に合計したいリストやタプルを渡すだけです。これだけで、forループを書くよりもずっと簡潔に合計値が求まります。
# リストの場合
numbers_list = [10, 20, 30, 40, 50]
total = sum(numbers_list)
print(f"リストの合計値: {total}") # 出力: リストの合計値: 150
# タプルの場合
numbers_tuple = (1, 2, 3, 4, 5)
total = sum(numbers_tuple)
print(f"タプルの合計値: {total}") # 出力: タプルの合計値: 15数値以外を含むとエラーになる注意点
sum()は数値の合計を求めるための関数です。そのため、リスト内に文字列など数値以外のデータ型が含まれているとTypeErrorというエラーが発生します。
# 文字列が含まれているとエラーになる例
invalid_list = [1, 2, '3', 4, 5]
# total = sum(invalid_list) # この行を実行するとTypeErrorが発生しますデータを合計する前には、中身がすべて数値であることを確認しましょう。
start引数で初期値を指定して合計する
sum()には、第二引数としてstartを指定できます。これは、合計を計算する際の初期値です。startを指定すると、リストの合計値にstartの値がさらに加算されます。
例えば、全員のポイントに、ボーナスポイントとして100点を加えたい場合などに便利です。
points = [25, 30, 15, 50]
bonus = 100
# 初期値100を指定して合計する
total_with_bonus = sum(points, bonus)
print(f"ボーナス込みの合計ポイント: {total_with_bonus}") # 出力: ボーナス込みの合計ポイント: 220min()関数:コレクションから最小値を見つけ出す
min()関数は、その名の通り、リストなどの中から**最小値(一番小さい値)**を見つけ出します。
基本的な使い方:min(iterable)
sum()と同じように、引数にリストやタプルを渡すことで、その中の最小値を返します。
scores = [78, 92, 65, 88, 71]
min_score = min(scores)
print(f"最小スコア: {min_score}") # 出力: 最小スコア: 65複数の数値を直接引数に渡して比較する
min()はリストだけでなく、複数の数値を直接引数として渡して、その中から最小値を見つけることもできます。
# 3つの数値を直接比較
min_value = min(10, -5, 20)
print(f"最小値: {min_value}") # 出力: 最小値: -5[応用] key引数を使って辞書リストの最小値を求める
min()関数の応用として非常に便利なのがkey引数です。これを使うと、単純な数値の比較ではなく、特定の条件における最小値を探せます。
例えば、商品情報が格納された辞書のリストから「価格(price)が最も安い商品」を見つけたい場合に使えます。
products = [
{'name': 'リンゴ', 'price': 120},
{'name': 'バナナ', 'price': 80},
{'name': 'オレンジ', 'price': 100},
]
# 各辞書の 'price' の値を比較基準にする
cheapest_product = min(products, key=lambda x: x['price'])
print(f"最も安い商品: {cheapest_product}")
# 出力: 最も安い商品: {'name': 'バナナ', 'price': 80}lambda x: x['price']は、リストの各要素(辞書)を受け取り、その中から'price'キーの値を返す、という簡単な処理を定義しています。min()は、この返された価格を基準に最小値を判断します。
max()関数:コレクションから最大値を見つけ出す
max()関数はmin()の逆で、リストなどの中から**最大値(一番大きい値)**を見つけ出します。使い方はmin()と全く同じです。
基本的な使い方:max(iterable)
引数にリストやタプルを渡して、最大値を取得します。
scores = [78, 92, 65, 88, 71]
max_score = max(scores)
print(f"最大スコア: {max_score}") # 出力: 最大スコア: 92複数の数値を直接引数に渡して比較する
min()と同様に、複数の数値を直接引数に渡すことも可能です。
# 3つの数値を直接比較
max_value = max(10, -5, 20)
print(f"最大値: {max_value}") # 出力: 最大値: 20[応用] key引数を使って辞書リストの最大値を求める
min()と同じくkey引数が使えます。先ほどの例で、「価格が最も高い商品」を見つけるにはmax()を使います。
products = [
{'name': 'リンゴ', 'price': 120},
{'name': 'バナナ', 'price': 80},
{'name': 'オレンジ', 'price': 100},
]
# 各辞書の 'price' の値を比較基準にする
expensive_product = max(products, key=lambda x: x['price'])
print(f"最も高い商品: {expensive_product}")
# 出力: 最も高い商品: {'name': 'リンゴ', 'price': 120}まとめ:sum(), min(), max()を使いこなしてコードをシンプルにしよう
今回は、Pythonの便利な組み込み関数sum(), min(), max()について解説しました。
sum(リスト, [初期値]): リスト内の数値の合計を計算するmin(リスト)またはmin(数値1, 数値2, ...): 最小値を検索するmax(リスト)またはmax(数値1, 数値2, ...): 最大値を検索する
これらの関数を適切に使うことで、forループで処理を書くよりも、コードが短く、意図が明確になり、バグも少なくなります。
特にmin(), max()のkey引数は、複雑なデータ構造を扱う際に非常に役立ちます。ぜひ積極的に活用して、よりスマートで “Pythonらしい” コードを目指しましょう。


コメント