如何从具有2个列表的列表中获取相同的索引元素

时间:2016-03-07 11:45:34

标签: 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

4 个答案:

答案 0 :(得分:3)

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

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

注意:如果您使用python 2.X,因为zip返回列表而不是迭代器,您不需要在{{1}上使用list()功能。

答案 1 :(得分:3)

悟:

zip

将导致

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

答案 2 :(得分:2)

使用reduce,这样就不会在内存中创建中间对象:

  if (!empty($_GET['job_unfav'])) {

        $value_to_delete = $_GET['job_fav']; // Cookie value to delete from array
        $favouriteIDs = explode('|', $_COOKIE['job_fav']);

        var_dump($favouriteIDs);
        unset($favouriteIDs[$value_to_delete]);

        $favouriteIDs = array_values($favouriteIDs);

        setcookie('job_fav', implode('|', $favouriteIDs));

    }

答案 3 :(得分:1)

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

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