作者flarehunter (Range)
看板Python
标题Re: [问题] list 里的元素累加
时间Mon Apr 21 12:27:31 2014
※ 引述《Drunk5566 (啾咪)》之铭言:
: 不好意思,小弟有一个小问题想发问,题目如下:
: 我有一个 list , A = [1,2,3,4,5,6,7,8,9,10] , 想要将里面的元素作累加,并且加到
: 第五个元素停止,第六个元素在重新作累加,也就是希望作出一个新的list B, 里面的元
: 素为 B = [1 , 1+2 , 1+2+3 , 1+2+3+4 , 1+2+3+4+5, 6, 6+7, 6+7+8, 6+7+8+9,
: 6+7+8+9+10]
: 我写得如下:
: if i<5:
: x = x + A[i]
: print x
: else:
: y = y + A[i]
: print y
: 1
: 3
: 6
: 10
: 15
: 6
: 13
: 21
: 30
: 40
: ------------------------------------------------------------
: 这个方法小一点的list 可以慢慢推,但我现在有个list 里面有200000
: 个元素,希望每200个元素作累加,这方法绝对行不通,请教一下有没有好一点的写法可
: 以帮忙小弟,谢了 ...
length = 200000
block = 200
for i in range(length / block):
for j in range(1, block):
idx = i * block + j
A[idx] += A[idx-1]
一层回圈不够 你可以用两个回圈XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.240.114.29
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1398054454.A.7C7.html
※ 编辑: flarehunter (210.240.114.29), 04/21/2014 12:28:46
1F:推 Drunk5566:感谢大大!!! 我真想跟你握手!!! 04/21 12:50
2F:推 COLDTURNIP:from itertools import accumulate 04/21 22:16
3F:→ COLDTURNIP:B = list(accumulate(a)) # 两行完工 04/21 22:17
4F:→ COLDTURNIP:啊抱歉没看清楚题目,请略过我 XD 04/21 22:19