2 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
更新:我嘗試了@Sunitha解決方案,但在itertools中沒(méi)有積累-可能是因?yàn)檫\(yùn)行2.7。
我已經(jīng)使用Python 2.7.15和Python 3.6.5測(cè)試了此代碼。此代碼從列表中的第二個(gè)子列表(索引1,如果適用)開(kāi)始,并向后看前一個(gè)子列表,以累積值,如您的示例一樣。
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hmm = [['x', 1, 2, 3], ['y', 2, 5, 4], ['z', 6, 2, 1]]
>>> for i in range(1, len(hmm)):
... prev = hmm[i - 1][1:]
... current = iter(hmm[i])
... hmm[i] = [next(current)] + [a + b for a, b in zip(prev, current)]
...
>>> hmm
[['x', 1, 2, 3], ['y', 3, 7, 7], ['z', 9, 9, 8]]
它在Python 3中的編寫(xiě)也可能略有不同:
Python 3.6.5 (default, Jun 14 2018, 13:19:33)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> hmm = [['x', 1, 2, 3], ['y', 2, 5, 4], ['z', 6, 2, 1]]
>>> for i in range(1, len(hmm)):
... _, *prev = hmm[i - 1]
... letter, *current = hmm[i]
... hmm[i] = [letter] + [a + b for a, b in zip(prev, current)]
...
>>> hmm
[['x', 1, 2, 3], ['y', 3, 7, 7], ['z', 9, 9, 8]]
添加回答
舉報(bào)