为了账号安全,请及时绑定邮箱和手机立即绑定

列表列表中元素的总和

列表列表中元素的总和

富国沪深 2021-03-31 13:10:28
我有一个这样的列表:list =[['x',1,2,3],['y',2,5,4],['z',6,2,1]...]如何计算总和并替换列表的特定元素,以便:>>>list =[['x',1,2,3],['y',3,7,7],['z',9,9,8]...]编辑:好奇为什么不赞成?!更新:我尝试了@Sunitha解决方案,但在itertools中没有积累-可能是因为运行2.7。我还想出了:    temp = [0,0,0]    for i, item in enumerate(list):        temp = [temp[0]+item[1], temp[1]+item[2],temp[2] + item[3]]        list[i] = [item[0],temp[0],temp[1],temp[2]]它笨拙,但无论如何,我是生物学家。打开更多python答案!
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

更新:我尝试了@Sunitha解决方案,但在itertools中没有积累-可能是因为运行2.7。


我已经使用Python 2.7.15和Python 3.6.5测试了此代码。此代码从列表中的第二个子列表(索引1,如果适用)开始,并向后看前一个子列表,以累积值,如您的示例一样。


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中的编写也可能略有不同:


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]]


查看完整回答
反对 回复 2021-04-13
  • 2 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信