回答編集履歴

2

追記

2019/06/12 09:23

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -71,3 +71,7 @@
71
71
  [0, 5, 30, 155, 780]
72
72
 
73
73
  ```
74
+
75
+
76
+
77
+ **参考**: [itertools --- 効率的なループ実行のためのイテレータ生成関数 — Python 3.7.3 ドキュメント](https://docs.python.org/ja/3/library/itertools.html#itertools.accumulate)

1

追記

2019/06/12 09:23

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,3 +1,31 @@
1
+ 現状のコードを活かすなら、
2
+
3
+ 毎度 5**i を計算するのではなく、直前にリストに追加した要素を参照すれば良いです。
4
+
5
+ ```Python
6
+
7
+ def num(a):
8
+
9
+ li = [0]
10
+
11
+ for i in range(a):
12
+
13
+ po = li[-1] # liの末尾の要素
14
+
15
+ po += (5**(i+1))
16
+
17
+ li.extend([po]) # これは単に li.append(po) で良い。
18
+
19
+ return li
20
+
21
+ ```
22
+
23
+
24
+
25
+ 別解
26
+
27
+ ---
28
+
1
29
  先に5のn乗のリストを作っておいて、後から累積和を求めるのが楽でしょう。
2
30
 
3
31
  ```Python