嵌套列表的逐列总和 [duplicate]

Column-wise sum of nested list [duplicate]

提问人:Jesse Sealand 提问时间:9/4/2023 最后编辑:mkrieger1Jesse Sealand 更新时间:9/4/2023 访问量:37

问:

有没有更python或更简单的方法来实现这一目标?

我正在获取嵌套列表中项目的逐列总和。我有一个工作示例,但我确定嵌套循环不是这样做的方法。一定有一些东西,也许在 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 嵌套列表

评论


答:

0赞 Christian Sloper 9/4/2023 #1

您可以使用以下开包技巧:zip

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

总有一种说法认为这有点神秘,但它确实完成了工作:

[12, 15, 18]

评论

0赞 Jesse Sealand 9/4/2023
当我使用 list(zip(*list_a)) 时,它看起来像是转置了列表。输出:[(1、4、7)、(2、5、8)、(3、6、9)]
1赞 mkrieger1 9/4/2023
@JesseSealand这就是重点,所以当你使用时,你得到的是列的总和,而不是行。sum()
0赞 Jesse Sealand 9/4/2023
我需要更多地研究它是如何工作的,但它很棒。我喜欢。太完美了。