假设我有以下列表:
a = [[1,2,3],[4,5,6],[7,8,9]]
有没有办法在不使用循环的情况下对所有秒元素求和?如:
the_sum = 0
for num in a:
the_sum += num[1]
>>> 15
答案 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