[問題] 新手發問

作者: 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