今回は、Pythonでリストの合計を求める方法を解説していきます。
合計を求める方法は沢山ありますが、基本を押さえれば問題ないかと思います。
参考:Pythonで組み込み関数を使わずに最大値・最小値・平均値・中央値・最頻値を求める方法
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
コンテンツ
sum関数を用いる
sum関数を用いてリストの合計を求めるのが一番簡単です。
1 2 3 4 5 6 7 8 |
l = [i for i in range(1, 11)] print(l) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sum = sum(l) print(sum) # 55 |
これだけだとつまらないので他の方法も見ていきます。
内包表記の書き方については次の記事を参考にしてください。
参考:【Python入門】初めてのプログラミング(内包表記)
for文を用いる
for文を用いて配列のすべての要素を加算して合計を求める方法です。
1 2 3 4 5 6 7 8 9 10 11 |
l = [i for i in range(1, 11)] print(l) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sum = 0 for i in l: sum += i print(sum) # 55 |
変数の「sum」を「0」に初期化するのを初心者は忘れがちなので気を付けましょう。
計算対象が文字列の場合
以下のサンプルのように、sum関数を使うリストが文字列の場合、エラーとなってしまいます。
1 2 3 4 5 |
list = ["1", "2", "3", "4", "5"] print(sum(list)) # TypeError: unsupported operand type(s) for +: 'int' and 'str' |
そこで、Pythonの内包表記を使って、数値型のリストを作成すると合計を求めることができます!
1 2 3 4 5 |
list = ["1", "2", "3", "4", "5"] print(sum([int(i) for i in list])) # 15 |
内包表記の詳しい説明については次の記事を参考にしてください。
数学的に考えて計算コストを抑える
こちらもfor文を用いてリストの合計を求めますが、計算方法を工夫します。
1から100までの合計を求めることを考えていきます。次の図を見てみてください。
1から100までの合計を求めるとき、小さい方と大きいほうを組み合わせるとすべての合計が101になっていることが分かると思います。
このことを利用してfor文を用いて計算コストを抑えていきます。
処理時間の計測
処理時間の計測を行うには、「Time」モジュールをインポートします。開始時間と終了時間を変数に格納しておき、それらの差分が実行時間になるというプログラムです。
今回は処理時間の比較がしやすいように、1から100000000までの大きな値の合計を求めていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import time #プログラムの開始時刻 start = time.time() sum = 0 for i in range(1, 100000001): sum += i #プログラムの終了時刻 end = time.time() #処理時間の計算 runTime = end - start print(sum) #5000000050000000 print(runTime) 13.04321551322937 |
計算コストに関しては次の記事が参考になると思います。
参考:【Python入門】初めてのプログラミング(append関数, extend関数, insert関数と処理速度)
合計を求めてみる
1から100000000の合計を工夫して求めるには、先ほどの組み合わせを利用して、「100000001」が5千万組あるという考え方です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import time #プログラムの開始時刻 start = time.time() sum = 0 for i in range(1, (100000001 - 1) // 2 + 1): sum += i + (100000001 - i) #プログラムの終了時刻 end = time.time() #処理時間の計算 runTime = end - start print(sum) #5000000050000000 print(runTime) # 11.06689739227295 |
この工夫の結果約2秒の処理時間を短縮することが出来ました。
ですが、リストの合計を求めるだけなら一番最初の手法である、「sum」関数を利用すれば問題ありません。
むしろ、間違えやすいので「sum」を使いましょう。
キー入力した整数の合計を求める
キーボードで整数を入力し、入力した整数の合計を求めるプログラムを作成していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
n = 5 sum = 0 for _ in range(n): n_i = int(input("整数を入力してください:")) sum += n_i print("入力された合計は", sum, "です。") """ 整数を入力してください:3 整数を入力してください:7 整数を入力してください:4 整数を入力してください:2 整数を入力してください:6 入力された合計は 22 です。 """ |
このプログラムはぜひ「google colaboratory」などで実際に実行して遊んでみてください。
まとめ
最後までお読みいただきありがとうございます。
今回は、Pythonでfor文を用いてリストの合計を求める方法を記述しました。
最後は少しおまけ的なところもありましたが、合計を求めるにはおとなしく「sum」関数を使ってくださいね!
参考:Pythonで組み込み関数を使わずに最大値・最小値・平均値・中央値・最頻値を求める方法
パソコン操作にお困りではありませんか?
ExcelやWordなど、基本的なソフトの使い方がいまいちわからないという方には、「PCHack」という講座をオススメしています。スクールの中でもコストパフォーマンスに優れ、オンラインなのでどこでも好きな時間に学習できます。
3万円ほどでPC初心者を脱出したい方は参考にしてください。
【PC初心者必見!】パソコンの勉強方法が分からないならPCHack講座がオススメ!