嵌套列表的按列求和

问题描述 投票:0回答:1

有没有更Pythonic或更简单的方法来完成这个?

我正在对嵌套列表中的项目进行按列求和。我有一个有效的示例,但我确信嵌套循环不是可行的方法。一定有某种东西,也许在 NumPy 或其他东西中,已经做到了这一点?

所以它是每个嵌套列表中第一个元素的总和,每个嵌套列表中第二个元素的总和,等等...

list_a = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]

def sum_columns(nested_list):
    
    col_sums = []
    col_len = len(list_a[0])
    
    for col in range(col_len):
        
        col_sum = 0
        
        for row in list_a:
            col_sum += row[col]
            
        col_sums.append(col_sum)
        
    return col_sums
        
sum_columns(list_a)

>> [12, 15, 18]

我还尝试了列表理解,因为我认为这会更快,但由于嵌套循环,它的逻辑似乎太复杂了,我无法让它工作。

python python-3.x numpy nested-lists
1个回答
0
投票

您可以使用拉链和这个拆包技巧:

[sum(i) for i in zip(*list_a)]

总是有人认为这有点神秘,但它确实有效:

[12, 15, 18]
© www.soinside.com 2019 - 2024. All rights reserved.