Pythonでリスト要素の合計を計算するにはsum()関数を使うのが効率的です。この記事を読むことで、sum関数の基本的な使い方から応用例、注意点まで理解できます。
sumの使い方
Pythonのsum関数は、イテラブル(例えばリストやタプル)の要素の合計を計算して返します。数値型(int、float)の要素を簡単に合計できます。
構文
sum関数の基本的な構文は以下の通りです。
sum(iterable, start=0)
iterableはリストやタプルなどの合計を求める対象です。startは合計の初期値を指定するパラメータで、省略可能でデフォルト値は0です。
例
基本的なsum関数の使い方を示します。この例では1から5までの整数を含むリストの合計を計算しています。
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total) # 15
初期値を指定する例
sum関数の第二引数に初期値を指定すると、その値から合計を開始します。この例では初期値として10を指定しているため、リストの合計15に10が加算されて25になります。
numbers = [1, 2, 3, 4, 5]
total = sum(numbers, 10)
print(total) # 25
注意点
数値型以外の要素が含まれているとエラーになる
sum関数は数値型の要素のみを処理できるという制限があります。リスト内に文字列などの数値以外の要素が含まれていると、以下のようにTypeErrorが発生します。
items = [1, '2', 3]
print(sum(items)) # TypeError: unsupported operand type(s) for +: 'int' and 'str'
文字列の結合はjoin()を使う
文字列を連結したい場合は、sum関数ではなく専用のjoin関数を使用するべきです。join関数は文字列リストを効率的に連結できます。
words = ['Hello', 'World']
print(''.join(words)) # HelloWorld
浮動小数点の精度に注意
浮動小数点数を扱う際には精度の問題が発生することがあります。多数の浮動小数点数を合計する場合、sum関数では丸め誤差が蓄積することがあります。より高精度な計算が必要な場合は、math.fsum関数を使用することで精度を向上させることができます。
import math
numbers = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
print(sum(numbers)) # 0.9999999999999999
print(math.fsum(numbers)) # 1.0
まとめ
Pythonでリスト要素の合計を計算するにはsum()関数が最適です。シンプルな構文で効率的に合計値を求められ、初期値の設定も可能です。ただし数値型以外の要素が含まれるとエラーになるため注意が必要です。文字列連結にはjoin()を使い、高精度な浮動小数点計算にはmath.fsum()を使用しましょう。