在列表列表

时间:2016-06-03 16:28:35

标签: python list list-comprehension

我的数据是不同大小的列表列表:

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

我想要做的是返回一个列表列表,其中列出了每个列表列表的第二个元素的值 - 所以,3 + 5 + 7是一个列表,所以是11 + 15等等:

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

或者甚至只是一个总和列表就可以了,因为我可以从那里拿走它:

newdata2 = [15,26,...]

我尝试通过列表推导的不同形式和结构访问列表中的项目,但我似乎无法将其设置为我想要的格式。

3 个答案:

答案 0 :(得分:7)

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

1.203.00 -> 1.20300
-1.203.00 -> -1.20300
-1.-1 -> -1.1
.1 -> .1
3.h3 -> 3.3
4h.34 -> 4.34
44 -> 44
4h -> 4

输出:

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

答案 1 :(得分:4)

@mathmax和@BrendanAbel提供了Pythonic和高性能的解决方案。但是,为了简洁和棘手,我想把这种换位方法投入到戒指中:

plus

答案 2 :(得分:3)

这样的事情非常简短,使用列表推导和map(如果可以避免的话,我尽量不使用嵌套的理解)

import operator

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