如何添加2D列表的列元素并将结果返回到列表中?

时间:2016-03-01 17:01:39

标签: python python-3.x

  

编写一个带有二维列表(列表列表)的函数   数字作为参数并返回一个列表,其中包含每个的总和   柱。假设每行中的列数相同。

我知道如何遍历多维列表中的行,但是如何遍历多维列表的列元素时遇到了问题。我只是python的初学者。我没有逻辑可以使用for循环或任何列表操作方法。我还没有遇到过lambda或其他任何类型的高级主题。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

转置并sum每列:

In [1]: arr = [[1,2,3],
         [4,5,6]]

In [2]: list(map(sum, zip(*arr)))
Out[2]: [5, 7, 9]

zip(*arr)为您提供了以下列:

In [3]: list(zip(*arr))
Out[3]: [(1, 4), (2, 5), (3, 6)]

然后在每列上绘制总和,为每个列提供总和。

如果您更喜欢列表comp:

In [5]: [sum(col) for col in zip(*arr)]
Out[5]: [5, 7, 9]

答案 1 :(得分:0)

这不是我提出过的最美丽的代码,但它应该可以解决问题。如果您使用numpy等软件包,事情会变得非常容易。

a = [1,2,3]
b = [4,5,6]
res = []
for i in range(len(a)):
   res.append(a[i] + b[i])

答案 2 :(得分:0)

二维列表可以表示为列表。那是

>>> mylist = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]
>>>len(mylist)

现在可以使用嵌套for循环创建总和。请注意,这假设每列中的元素数量相同。

mysum = [0, 0, 0, 0]

for i in range(len(mylist)):
    for j in range(len(mylist[0])):
        mysum[i] += mylist[i][j]

print mysum

如果你想使它更通用(并允许不同大小的列)而不必创建一个显式的mysum列表,你可以使用以下代码。

mysum = []
for i in range(len(mylist)):
    total = 0
    for j in range(len(mylist[i])):
        total += mylist[i][j]
    mysum.append(total)

print mysum

答案 3 :(得分:0)

def _sum_of_columns_sample_(sample_list):
cols = len(sample_list[0])
mylist = []
for c in range(cols):
    column_sum = 0
    for row in sample_list:
        column_sum += row[c]
    mylist.append(column_sum)
return mylist