Python sum関数とは?リストの合計を計算する基本

Pythonのsum関数の基本的な使い方から応用例まで解説。リストや数値の合計を効率的に計算する方法を初心者向けに説明します。

Learning Next 運営
18 分で読めます

みなさん、数字の合計を計算したいと思ったことはありませんか?

「テストの点数を合計したい」 「売上データを集計したい」 「リストの数値を足し算したい」

こんな場面って、プログラミングでよくありますよね。

でも大丈夫です! この記事では、Pythonのsum関数について、基本から実践的な使い方まで、初心者の方でもわかりやすく解説します。

sum関数をマスターすれば、数値の合計計算がとても簡単になりますよ!

sum関数って何?

sum関数とは、リストに入った数値をすべて足し算してくれるPythonの便利な機能です。

従来の方法との比較

今まではこんな風に書いていましたよね。

# 従来の方法(forループを使う)
numbers = [1, 2, 3, 4, 5]
total = 0
for num in numbers:
total += num
print(total) # 15

でも、sum関数を使えば、こんなに簡単になります。

# sum関数を使った方法
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total) # 15

たった1行で合計が計算できました!

すごく簡単ですよね。

sum関数の基本形

sum関数の基本的な使い方はとてもシンプルです。

# 基本の形
sum(リスト)
# 例:テストの点数を合計
scores = [85, 92, 78, 95, 88]
total = sum(scores)
print(f"合計点: {total}") # 合計点: 438

**sum()**の中に数値のリストを入れるだけで、自動的に全部足してくれます。

基本的な使い方をやってみよう

sum関数でいろんな数値を合計してみましょう。

整数の合計

まずは、整数(1、2、3のような数)から始めます。

# 整数のリストを合計
numbers = [10, 20, 30, 40, 50]
result = sum(numbers)
print(f"合計: {result}") # 合計: 150
# 小さい数から大きい数まで
mixed_numbers = [1, 100, 5, 200, 50]
result2 = sum(mixed_numbers)
print(f"合計: {result2}") # 合計: 356

どんな整数でも、きちんと合計してくれます。

小数の合計

小数(3.14のような数)も計算できます。

# 小数のリストを合計
prices = [100.5, 250.0, 150.25, 300.75]
total_price = sum(prices)
print(f"合計金額: {total_price}円") # 合計金額: 801.5円
# 整数と小数が混ざっても大丈夫
mixed = [10, 20.5, 30, 40.25]
result = sum(mixed)
print(f"混合の合計: {result}") # 混合の合計: 100.75

整数と小数が混ざっていても、問題なく計算してくれます。

タプルも使えます

リストだけでなく、タプル()でも計算できます。

# タプルの合計
coordinates = (10, 20, 30)
total = sum(coordinates)
print(f"座標の合計: {total}") # 座標の合計: 60
# 商品価格のタプル
product_prices = (1200, 800, 1500, 2000)
total_cost = sum(product_prices)
print(f"総額: {total_cost}円") # 総額: 5500円

タプルでもリストでも、同じように使えて便利ですね。

初期値を指定してみよう

sum関数では、計算を始める前の数値(初期値)を指定できます。

初期値の使い方

# 普通のsum関数
numbers = [1, 2, 3, 4, 5]
result1 = sum(numbers)
print(f"普通: {result1}") # 普通: 15
# 初期値を100に設定
result2 = sum(numbers, 100)
print(f"初期値100: {result2}") # 初期値100: 115

**sum(リスト, 初期値)**という形で、初期値を指定できます。

上の例では、100 + 1 + 2 + 3 + 4 + 5 = 115 になりました。

実用的な初期値の例

初期値は、こんな場面で便利です。

# 前月の売上が50000円
previous_sales = 50000
# 今月の日別売上
daily_sales = [2000, 3500, 1800, 4200, 2800]
# 累計売上を計算(前月分 + 今月分)
total_sales = sum(daily_sales, previous_sales)
print(f"累計売上: {total_sales}円") # 累計売上: 64300円
# ポイントの合計(初期ポイント + 新しく獲得したポイント)
initial_points = 500
new_points = [50, 100, 25, 75]
total_points = sum(new_points, initial_points)
print(f"総ポイント: {total_points}pt") # 総ポイント: 750pt

既存の値に新しい値を追加したい時にとても便利です。

空のリストはどうなる?

空のリスト(何も入っていないリスト)を計算してみましょう。

空リストの動作

# 空のリスト
empty_list = []
result = sum(empty_list)
print(f"空リストの合計: {result}") # 空リストの合計: 0
# 初期値ありの空リスト
result_with_start = sum(empty_list, 100)
print(f"初期値ありの合計: {result_with_start}") # 初期値ありの合計: 100

空のリストの場合は、初期値がそのまま結果になります。

初期値を指定しなかった場合は、0が返されます。

条件によって空になるリスト

# すべての数値が条件に合わない場合
numbers = [1, 2, 3, 4, 5]
big_numbers = [n for n in numbers if n > 10]
print(f"10より大きい数: {big_numbers}") # 10より大きい数: []
result = sum(big_numbers)
print(f"合計: {result}") # 合計: 0

条件に合う数値がない場合も、安全に0が返されます。

実際に使ってみよう

sum関数を使った実用的な例をいくつか見てみましょう。

成績計算プログラム

学生の成績を集計してみます。

# 各科目の点数
math_scores = [85, 92, 78, 95]
english_scores = [88, 76, 90, 82]
science_scores = [92, 88, 85, 90]
# 各科目の合計を計算
math_total = sum(math_scores)
english_total = sum(english_scores)
science_total = sum(science_scores)
print(f"数学の合計: {math_total}点")
print(f"英語の合計: {english_total}点")
print(f"理科の合計: {science_total}点")
# 全科目の総合計
all_scores = math_scores + english_scores + science_scores
grand_total = sum(all_scores)
average = grand_total / len(all_scores)
print(f"総合計: {grand_total}点")
print(f"平均点: {average:.1f}点")

実行結果:

数学の合計: 350点 英語の合計: 336点 理科の合計: 355点 総合計: 1041点 平均点: 86.8点

家計簿プログラム

月の支出を管理してみましょう。

# 1週間ごとの支出
week1_expenses = [5000, 3200, 1800, 2500, 4000]
week2_expenses = [6000, 2800, 2200, 3500, 4500]
week3_expenses = [4500, 3000, 1500, 2800, 3800]
week4_expenses = [5500, 3800, 2000, 3200, 4200]
# 各週の合計
week1_total = sum(week1_expenses)
week2_total = sum(week2_expenses)
week3_total = sum(week3_expenses)
week4_total = sum(week4_expenses)
print("週別支出:")
print(f"第1週: {week1_total:,}円")
print(f"第2週: {week2_total:,}円")
print(f"第3週: {week3_total:,}円")
print(f"第4週: {week4_total:,}円")
# 月の合計支出
monthly_total = week1_total + week2_total + week3_total + week4_total
print(f"
月の総支出: {monthly_total:,}円")

実行結果:

週別支出: 第1週: 16,500円 第2週: 19,000円 第3週: 15,600円 第4週: 18,700円 月の総支出: 69,800円

ゲームのスコア計算

ゲームのポイント計算をしてみます。

# ステージごとのスコア
stage1_scores = [1000, 1500, 2000, 500]
stage2_scores = [2500, 3000, 1800, 2200]
stage3_scores = [3500, 4000, 2800, 3200]
# 各ステージの合計
stage1_total = sum(stage1_scores)
stage2_total = sum(stage2_scores)
stage3_total = sum(stage3_scores)
print("ステージ別スコア:")
print(f"ステージ1: {stage1_total:,}点")
print(f"ステージ2: {stage2_total:,}点")
print(f"ステージ3: {stage3_total:,}点")
# 最終スコア(ボーナスポイント付き)
bonus_points = 5000
final_score = sum([stage1_total, stage2_total, stage3_total], bonus_points)
print(f"
ボーナス: {bonus_points:,}点")
print(f"最終スコア: {final_score:,}点")

実行結果:

ステージ別スコア: ステージ1: 5,000点 ステージ2: 9,500点 ステージ3: 13,500点 ボーナス: 5,000点 最終スコア: 33,000点

条件付きで合計してみよう

特定の条件に合う数値だけを合計することもできます。

偶数だけ合計

# 1から10までの数値
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 偶数だけを抽出
even_numbers = [n for n in numbers if n % 2 == 0]
print(f"偶数: {even_numbers}") # 偶数: [2, 4, 6, 8, 10]
# 偶数の合計
even_sum = sum(even_numbers)
print(f"偶数の合計: {even_sum}") # 偶数の合計: 30
# 一行で書く方法
even_sum_short = sum([n for n in numbers if n % 2 == 0])
print(f"一行で書いた場合: {even_sum_short}") # 一行で書いた場合: 30

偶数だけを選んで合計できました。

一定以上の値だけ合計

# テストの点数
test_scores = [45, 78, 92, 63, 88, 55, 97, 72]
# 70点以上の点数だけを合計
good_scores = [score for score in test_scores if score >= 70]
print(f"70点以上: {good_scores}") # 70点以上: [78, 92, 88, 97, 72]
good_total = sum(good_scores)
average = good_total / len(good_scores)
print(f"70点以上の合計: {good_total}点")
print(f"70点以上の平均: {average:.1f}点")

条件に合う値だけを選んで計算できるので、とても便利ですね。

範囲指定で合計

# 商品価格リスト
prices = [500, 1200, 800, 2500, 300, 1800, 400, 3000]
# 1000円以上2000円以下の商品だけ
mid_range = [p for p in prices if 1000 <= p <= 2000]
print(f"1000-2000円の商品: {mid_range}") # 1000-2000円の商品: [1200, 1800]
mid_total = sum(mid_range)
print(f"中価格帯の合計: {mid_total}円") # 中価格帯の合計: 3000円

価格帯を指定して合計することもできます。

エラーを避けるコツ

sum関数を使う時の注意点を確認しましょう。

数値以外が混ざっている場合

sum関数は、数値以外があるとエラーになります。

# これはエラーになります
mixed_data = [1, 2, "3", 4, 5]
try:
result = sum(mixed_data)
print(result)
except TypeError as e:
print(f"エラーが発生: {e}")
# 数値だけを取り出して計算
numbers_only = [x for x in mixed_data if isinstance(x, (int, float))]
print(f"数値のみ: {numbers_only}") # 数値のみ: [1, 2, 4, 5]
result = sum(numbers_only)
print(f"合計: {result}") # 合計: 12

文字列や他のデータが混ざっている場合は、事前に数値だけを取り出しましょう。

安全な計算関数

エラーを防ぐための関数を作ってみます。

def safe_sum(data):
"""安全に数値の合計を計算する関数"""
if not data: # 空のリストの場合
return 0
numbers = []
for item in data:
if isinstance(item, (int, float)):
numbers.append(item)
else:
print(f"'{item}'は数値ではないので無視します")
return sum(numbers)
# テストしてみる
test_data = [1, 2, "hello", 3.5, None, 4]
result = safe_sum(test_data)
print(f"安全な合計: {result}")

実行結果:

'hello'は数値ではないので無視します 'None'は数値ではないので無視します 安全な合計: 10.5

この関数を使えば、どんなデータが入っていても安全に計算できます。

None値のチェック

None(何もない値)が含まれる場合の対処法です。

def calculate_total(scores):
"""スコアの合計を計算(None値を除外)"""
if not scores:
return 0
# None以外の数値だけを抽出
valid_scores = [score for score in scores if score is not None]
if not valid_scores:
print("有効なスコアがありません")
return 0
total = sum(valid_scores)
print(f"有効なスコア数: {len(valid_scores)}")
return total
# テストデータ
scores = [85, None, 92, 78, None, 95]
total = calculate_total(scores)
print(f"合計スコア: {total}")

実行結果:

有効なスコア数: 4 合計スコア: 350

まとめ

Pythonのsum関数について、基本から実践的な使い方まで詳しく解説しました。

今日覚えてほしいポイント

  • sum関数は、リストの数値をすべて足し算してくれる
  • 初期値を指定することもできる
  • 空のリストでも安全に動作する
  • 条件付き合計で特定の値だけを計算可能
  • エラー対策も忘れずに

sum関数が活躍する場面

  • 成績や点数の集計
  • 売上や支出の計算
  • ゲームのスコア計算
  • データ分析や統計処理
  • 家計簿やお小遣い帳

sum関数は、Pythonで数値を扱う時の基本的なツールです。 今日学んだことを活かして、実際に数値計算プログラムを作ってみてくださいね。

まずは簡単なリストの合計から始めて、徐々に複雑な計算にも挑戦してみましょう! きっとプログラミングがもっと楽しくなりますよ。

関連記事