如何对列表中的一列求和?

17 投票
8 回答
75061 浏览
提问于 2025-04-17 18:45

我有一个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

试试这个:

a = [[1,2,3],
     [1,2,3]]

print [sum(x) for x in zip(*a)]

zip函数的说明

31

使用一个 for 循环(在一个 生成器表达式 中):

data = [[1,2,3],
        [1,2,3]]

column = 1
print(sum(row[column] for row in data))  # -> 4

撰写回答