【Python】sum()で合計値を求める!使い方について解説!
Pythonのsum()を使用することで、合計値を求めることができます。
sum()とはイテレータ内の合計値を返す関数であり、リストやタプルなどの要素の合計値を計算することができます。
しかし、イテレータ内に文字列の要素が含まれている場合は、合計値を計算することができませんので注意してください。
また、mathライブラリのfsum()を使用することでも合計値を求めることができ、math.fsum()は全てfloat型で返すことから、合計値を誤差なく正確に計算することができます。
今回はPythonのsum()で合計値を求める方法について以下の内容で解説していきます。
⚫︎ sum()を使用する際の注意点
⚫︎ イテレータ内の合計値を求める
⚫︎ イテレータの合計値に数値を加算して求める
⚫︎ math.fsum()で合計値を求める方法
目次
sum()とは
sum()とはイテレータ内の合計値を返す関数になります。
sum()の書き方
sum()の書き方は以下のようになります。
1 |
sum(イテレータ [, 加算する数値] ) |
sum()のパラメータ
⚫︎ イテレータ:
合計値を求めたいイテレータ(リストやタプル)を指定する
⚫︎ 加算する数値:
イテレータの合計値に加算したい数値を指定する
sum()を使用する際の注意点
sum()を使用するには以下のような注意点があります。
⚫︎ イテレータの要素が文字列である場合は、合計値を計算できない:
イテレータの要素が文字列である場合は、sum()で合計値を計算することができません。
計算しようとするとエラーが発生します。
例
1 2 3 |
sample_list = ['123', '13', '56', '89', '140'] sum(sample_list) # TypeError: unsupported operand type(s) for +: 'int' and 'str' |
⚫︎ イテレータの要素に数値と文字列がある場合は、合計値を計算できない:
イテレータの要素に数値と文字列がある場合は、sum()で合計値を計算することができません。
計算しようとするとこちらもエラーが発生します。
例
1 2 3 |
sample_list = ['123', '13', 345, '89', 12345] sum(sample_list) # TypeError: unsupported operand type(s) for +: 'int' and 'str' |
sum()の使い方
sum()の使い方を紹介します。
イテレータ内の合計値を求める
sum()はイテレータ内の合計値を求める場合に使用します。
まずは、リスト(list)内の合計値を求めてみます。
リストの場合
1 2 3 4 5 6 |
sample_list = [123, 13, 345, 89, 12345, 12345, 45689, 39665] print(sample_list) print('・リスト内の合計値を求める') sample_list_sum = sum(sample_list) print('合計値', sample_list_sum) |
出力結果
[123, 13, 345, 89, 12345, 12345, 45689, 39665]
・リスト内の合計値を求める
合計値 110614
sum()によってリストの合計値が求められています。
続いて、タプル(tuple)内の合計値を求めてみます。
タプルの場合
1 2 3 4 5 6 |
sample_tuple = (123, 1883, 3545, 1289, 12345, 12345, 4589, 39665) print(sample_tuple) print('・タプル内の合計値を求める') sample_tuple_sum = sum(sample_tuple) print('合計値', sample_tuple_sum) |
出力結果
(123, 1883, 3545, 1289, 12345, 12345, 4589, 39665)
・タプル内の合計値を求める
合計値 75784
sum()によってタプルの合計値が求められています。
続いて、辞書(dict)内の合計値を求めてみます。
辞書の場合
1 2 3 4 5 6 7 8 9 10 |
sample_dict = {1: 136, 2: 1883, 3: 3545, 4: 1289, 5: 69845, 6: 8835, 7: 4589, 8: 39665} print(sample_dict) print('・辞書内のキーの合計値を求める') sample_dict_sum1 = sum(sample_dict.keys()) print('合計値', sample_dict_sum1) print('・辞書内の値の合計値を求める') sample_dict_sum2 = sum(sample_dict.values()) print('合計値', sample_dict_sum2) |
出力結果
{1: 136, 2: 1883, 3: 3545, 4: 1289, 5: 69845, 6: 8835, 7: 4589, 8: 39665}
・辞書内のキーの合計値を求める
合計値 36
・辞書内の値の合計値を求める
合計値 129787
sum()によって辞書の合計値が求められています。
最後に、set型内の合計値を求めてみます。
set型の場合
1 2 3 4 5 |
sample_set = {333, 13, 34, 8999, 145, 12345, 1689, 396895} print(sample_set) print('・set型内の合計値を求める') sample_set_sum = sum(sample_set) print('合計値', sample_set_sum) |
出力結果
{34, 8999, 13, 333, 145, 1689, 12345, 396895}
・set型内の合計値を求める
合計値 420453
sum()によってset型の合計値が求められています。
イテレータの合計値に数値を加算して求める
イテレータの合計値に数値を加算して求めるにはsum()のパラメータである加算する数値を指定します。
例
1 2 3 4 5 6 |
sample_list = [123, 13, 345, 89, 12345, 12345, 45689, 39665] print(sample_list) print('・イテレータ内の合計値に数値を加算する') sample_list_sum = sum(sample_list, 2000000) print('合計値', sample_list_sum) |
出力結果
[123, 13, 345, 89, 12345, 12345, 45689, 39665]
・リスト内の合計値に数値を加算する
合計値 2110614
sum()のパラメータである加算する数値を指定することで、「イテレータの合計値 + 加算する数値」で合計値を返しています。
math.fsum()で合計値を求める方法
sum()だけでなく、math.fsum()という関数でも合計値を求めることができます。
math.fsum()は、mathライブラリで準備されている合計値を正確に返す関数であり、合計値を全てfloat型で返すようになります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import math sample_list1 = [1113, 138, 245, 900, 245, 122, 5689, 3665] print(sample_list1) print('・math.fsum()で合計値をする') sample_list1_sum = math.fsum(sample_list1) print('合計値', sample_list1_sum) sample_list2 = [1113, 138, 245, 900, 245, 122, 5689, 3665] print(sample_list2) print('・sum()で合計値を求める') sample_list2_sum = sum(sample_list2) print('合計値', sample_list2_sum) |
出力結果
[1113, 138, 245, 900, 245, 122, 5689, 3665]
・math.fsum()で合計値をする
合計値 12117.0
[1113, 138, 245, 900, 245, 122, 5689, 3665]
・sum()で合計値を求める
合計値 12117
合計値がint型で返せる場合はint型で、float型で返さなければならない場合はfloat型で返すsum()に対して、math.fsum()はどのような数値であってもfloat型で返しています。
その為、小数を含む要素の合計値を求める際にはmath.fsum()を使用したほうが良いです。
例えば、小数を含む要素の合計値をsum()で求めるとすると、誤差が生じてしまい正しい計算が行われない場合があります。
しかし、math.fsum()で合計値を求めようとすると、誤差なく正しい計算が行われるようになります。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
import math sample_list = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.35, 0.1, 0.1, 0.1] print(sample_list) print('・math.fsum()で合計値を求める') sample_list1_sum = math.fsum(sample_list) print('合計値', sample_list1_sum) print('・sum()で合計値を求める') sample_list2_sum = sum(sample_list) print('合計値', sample_list2_sum) |
出力結果
[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.35, 0.1, 0.1, 0.1]
・math.fsum()で合計値を求める
合計値 1.25
・sum()で合計値を求める
合計値 1.2500000000000002
今回のポイント
sum()で合計値を求める
Pythonでリストやタプルのようなイテレータ内の合計値を求めるにはsum()を使用する。
⚫︎ sum()はイテレータ内の要素に文字列が含まれている場合は計算することができない
⚫︎ sum()はイテレータ内の合計値を求めることができる
⚫︎ sum()でイテレータの合計値に数値を加算して求めるにはパラメータである加算する数値を指定する
⚫︎ sum()だけでなく、math.fsum()でも合計値を求めることができる
(math.fsum()は小数の計算など誤差なく計算できる)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。