Python 如何从包含两个列表的列表中获取相同的索引元素

Python 如何从包含两个列表的列表中获取相同的索引元素,python,list-comprehension,Python,List Comprehension,假设我有以下列表: a = [[1,2,3],[4,5,6],[7,8,9]] 有没有一种方法可以在不使用循环的情况下对所有秒元素求和?例如: the_sum = 0 for num in a: the_sum += num[1] >>> 15 不使用循环,您可以使用zip()函数: >>> sum(list(zip(*a))[1]) 15 注意:如果您使用的是python 2.X,因为zip返回一个列表而不是迭代器,您不需要在zip函数上使用l

假设我有以下列表:

a = [[1,2,3],[4,5,6],[7,8,9]]
有没有一种方法可以在不使用循环的情况下对所有秒元素求和?例如:

the_sum = 0
for num in a:
    the_sum += num[1]
>>> 15

不使用循环,您可以使用
zip()
函数:

>>> sum(list(zip(*a))[1])
15

注意:如果您使用的是python 2.X,因为
zip
返回一个列表而不是迭代器,您不需要在
zip
函数上使用
list()

不使用循环,您可以使用
zip()
函数:

>>> sum(list(zip(*a))[1])
15
注意:如果您使用的是python 2.X,因为
zip
返回一个列表而不是迭代器,那么您不需要在
zip
函数上使用
list()

理解:

a = [[1,2,3],[4,5,6],[7,8,9]]
print(sum(sublist[1] for sublist in a))
将导致

15
理解:

a = [[1,2,3],[4,5,6],[7,8,9]]
print(sum(sublist[1] for sublist in a))
将导致

15

使用reduce不在内存中创建中间对象:

>>>from functools import reduce
>>>reduce(lambda x, y: x + y[1], a, 0)
>>>15

使用reduce不在内存中创建中间对象:

>>>from functools import reduce
>>>reduce(lambda x, y: x + y[1], a, 0)
>>>15

所有其他答案都很好,但这里有第四种方法:

>>> import operator
>>> sum(map(operator.itemgetter(2), a))
15

所有其他答案都很好,但这里有第四种方法:

>>> import operator
>>> sum(map(operator.itemgetter(2), a))
15
sum([x[1]表示a中的x])
(你知道这里有一个循环,但你看不到它)。
sum([x[1]表示a中的x])
(你知道这里有一个循环,但你看不到它)。