如何采取相同的索引元素从列表中有2所列出
问题描述:
可以说我有以下列表:如何采取相同的索引元素从列表中有2所列出
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()
。
答
悟:
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
'sum([x [1] for x in a))'(你知道这里有一个循环,但你看不到它)。 – Maroun