簡體   English   中英

如何對嵌套列表中的元素求和?

[英]How to sum elements inside a nested list?

所以,我有一個看起來像這樣的列表

[[[1, 2], [3, 4], [5, 6]],
 [[7, 8], [9, 10], [11, 12]],
 [[13, 14], [15, 16], [17, 18]],
 [[19, 20], [21, 22], [23, 24]]]

我希望它看起來像這樣

[[3, 7, 11],
 [15, 19, 23],
 [27, 31, 35],
 [39, 43, 27]]

3 = sum([1, 2]), 7 = sum([3, 4]), ...

我試過嵌套 for 循環,但我沒有找到任何可以得到想要的結果的東西,有誰知道我該怎么做?

這將很好地完成這項工作,並且 imo 比列表理解更具可讀性。

lists = [[[1, 2], [3, 4], [5, 6]],
        [[7, 8], [9, 10], [11, 12]],
        [[13, 14], [15, 16], [17, 18]],
        [[19, 20], [21, 22], [23, 24]]]

new_lists = []
for nested in lists:
    new_ls = []
    for ls in nested:
        new_ls.append(sum(ls))
    new_lists.append(new_ls)


>>> new_lists
[[3, 7, 11], [15, 19, 23], [27, 31, 35], [39, 43, 47]]

您還可以使用列表推導式:

[[sum(x) for x in triple] for triple in lists]

在上面的列表理解中,三元組將是您的三個雙打列表,因此第一個 for 循環將涵蓋這些。 然后 x 將是三元組內部的每個雙打列表,因此我們對其進行求和,同時通過使用此括號將其保留在原始三元組中:

[sum(x) for x in triple]

輸出:

[[3, 7, 11], [15, 19, 23], [27, 31, 35], [39, 43, 47]]

如果您樂於使用 3rd 方庫,您可以使用 NumPy 並沿單個維度求和:

import numpy as np

A = np.array([[[1, 2], [3, 4], [5, 6]],
              [[7, 8], [9, 10], [11, 12]],
              [[13, 14], [15, 16], [17, 18]],
              [[19, 20], [21, 22], [23, 24]]])

res = A.sum(2)

結果:

array([[ 3,  7, 11],
       [15, 19, 23],
       [27, 31, 35],
       [39, 43, 47]])

另請參閱: 與常規 Python 列表相比,NumPy 的優勢是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM