看板 Python 關於我們 聯絡資訊
我有一個問題 但我是新手 想好久了 寫不出來 想請教各位高手 我有一列數 存在陣列裡面 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 我該如何做呢????請大家教我.... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.253.103.239 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1547600673.A.7B3.html
sean50301: b[i] = [sum(a[1:i]) for i in range(0,n)] 01/16 09:20
sean50301: b = 01/16 09:20
sean50301: 打錯 01/16 09:21
sean50301: b = [sum(a[0:i]) for i in range(0,n)] 01/16 09:22
adrianshum: b=[sum(x[0:i+1]) for i in (range(0, len(x))] 01/16 09:25
adrianshum: 樓上, range 的 to index 是 exclusive 01/16 09:26
sean50301: 對欸應該+1XD 01/16 09:27
kiey: b.append(a[idx] if idx == 0 else b[idx-1] + a[idx]) 01/16 09:34
chenbigdog: 謝謝樓上高手!!!!! 01/16 10:00
chenbigdog: k大的寫法,小弟看不懂...哈..不過還是很謝謝你!!!! 01/16 10:00
yangs0618: K大的是 index是0的b直接給a0 不是的就把前一個b加上這 01/16 12:14
yangs0618: 個index的a 有點歸納法fu 01/16 12:14
djshen: 不要寫成O(n^2)好嗎.. 01/16 12:34
djshen: 另外這寫不出來不是程式問題 是國小國中數學問題 01/16 12:37
adrianshum: 寫成O(n^2) 單純因為可以一行搞定,當然要是知道input 01/16 15:12
adrianshum: 會很大就不會這樣寫。那上面那句 append 還是要配個f 01/16 15:12
adrianshum: or loop 才行,要是要寫 for loop 我覺得那就不必寫得 01/16 15:12
adrianshum: 那麼隱晦。這樣寫更易明白: 01/16 15:12
adrianshum: sum=0 01/16 15:12
adrianshum: for i in x : 01/16 15:12
adrianshum: sum+=i 01/16 15:12
adrianshum: y.append(sum) 01/16 15:13
adrianshum: Oops 上一行忘了indent 01/16 15:13
adrianshum: 其實用 itertools.accumulate 也可以一行搞定: 01/17 01:05
adrianshum: y=list(itertools.accumulate(x, lambda a,b: a+b)) 01/17 01:06
chenbigdog: python板充滿溫暖,謝謝各位!!!! 01/17 09:43