[问题] 新手发问

楼主: chenbigdog (gto)   2019-01-16 09:04:31
我有一个问题
但我是新手
想好久了
写不出来
想请教各位高手
我有一列数
存在阵列里面
a[1]=x
a[2]=y
a[3]=z


a[n]=xxx
我要把上面的阵列
存在另一个阵列里面
变成
b[1]=x
b[2]=x+y
b[3]=x+y+z
b[n]=x+y+z+....xxx
我该如何做呢????请大家教我....
作者: sean50301 ( (づ′・ω・)づ)   2019-01-16 09:20:00
b[i] = [sum(a[1:i]) for i in range(0,n)]b =打错b = [sum(a[0:i]) for i in range(0,n)]
作者: adrianshum (Alien)   2019-01-16 09:25:00
b=[sum(x[0:i+1]) for i in (range(0, len(x))]楼上, range 的 to index 是 exclusive
作者: sean50301 ( (づ′・ω・)づ)   2019-01-16 09:27:00
对欸应该+1XD
作者: kiey (炼)   2019-01-16 09:34:00
b.append(a[idx] if idx == 0 else b[idx-1] + a[idx])
楼主: chenbigdog (gto)   2019-01-16 10:00:00
谢谢楼上高手!!!!!k大的写法,小弟看不懂...哈..不过还是很谢谢你!!!!
作者: yangs0618 (阿彰)   2019-01-16 12:14:00
K大的是 index是0的b直接给a0 不是的就把前一个b加上这个index的a 有点归纳法fu
作者: djshen (djshen)   2019-01-16 12:34:00
不要写成O(n^2)好吗..另外这写不出来不是程式问题 是国小国中数学问题
作者: adrianshum (Alien)   2019-01-16 15:12:00
写成O(n^2) 单纯因为可以一行搞定,当然要是知道input会很大就不会这样写。那上面那句 append 还是要配个for loop 才行,要是要写 for loop 我觉得那就不必写得那么隐晦。这样写更易明白:sum=0for i in x :sum+=iy.append(sum)Oops 上一行忘了indent其实用 itertools.accumulate 也可以一行搞定:y=list(itertools.accumulate(x, lambda a,b: a+b))
楼主: chenbigdog (gto)   2019-01-17 09:43:00
python板充满温暖,谢谢各位!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com