如何采取相同的索引元素从列表中有2所列出

问题描述:

可以说我有以下列表:如何采取相同的索引元素从列表中有2所列出

a = [[1,2,3],[4,5,6],[7,8,9]] 

有没有办法来总结所有的元素秒不使用循环?如:

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

'sum([x [1] for x in a))'(你知道这里有一个循环,但你看不到它)。 – Maroun

不使用循环中,您可以使用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 

使用减少,所以你不要在内存中创建中间对象:

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

所有其他的答案是完全正常的,但这里有第四种方式:

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