对列表列表中的第二个列表项求和

2024-09-24 22:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据是一系列大小不一的列表:

data = [[[1, 3],[2, 5],[3, 7]],[[1,11],[2,15]],.....]]]

我要做的是返回一个列表列表,每个列表的第二个元素的值求和-因此,3+5+7是一个列表,11+15也是一个列表,以此类推:

newdata = [[15],[26],...]

或者仅仅列出一个总数就可以了,因为我可以从那里得到:

newdata2 = [15,26,...]

我试着通过列表理解的不同形式和结构来访问列表中的项目,但我似乎无法使它达到我想要的格式。你知道吗


Tags: 数据项目元素列表data格式结构形式
3条回答

类似这样的内容非常简短,使用列表理解和map(如果可以避免的话,我尽量不使用嵌套理解)

import operator

f = operator.itemgetter(1)
[sum(map(f, x)) for x in data]

尝试使用列表理解的单行方法:

[sum([x[1] for x in i]) for i in data]

输出:

data = [[[1, 3],[2, 5],[3, 7]],[[1,11],[2,15]]]
[sum([x[1] for x in i]) for i in data]
Out[19]: [15, 26]

如果希望输出是列表的列表,则使用

[[sum([x[1] for x in i])] for i in data]

@mathmax和@BrendanAbel提供了Pythonic和performant解决方案。然而,为了简洁和巧妙,我想将这种换位方法应用到环中:

[sum(zip(*x)[1]) for x in data]

相关问题 更多 >