如何对列表中的一列求和?
我有一个Python数组,长这样:
[[1,2,3],
[1,2,3]]
我可以通过 sum(array[i])
来计算某一行的总和,那么我该怎么用双重循环来计算某一列的总和呢?
比如说,对于第一列,我可以得到2,然后是4,再然后是6。
8 个回答
5
你不需要用循环,可以使用 zip()
来转置列表,然后取你想要的那一列:
sum(list(zip(*data)[i]))
(注意在2.x版本中,zip()
会返回一个列表,所以你不需要再用 list()
来转换)。
补充:如果不使用 zip()
,解决这个问题的最简单方法可能是:
column_sum = 0
for row in data:
column_sum += row[i]
我们只需遍历每一行,取出元素并把它加到总数里。
不过,这样做效率较低,而且没什么意义,因为我们有内置的函数可以帮我们完成这个任务。总的来说,建议使用 zip()
。
7
31
使用一个 for
循环(在一个 生成器表达式 中):
data = [[1,2,3],
[1,2,3]]
column = 1
print(sum(row[column] for row in data)) # -> 4