编写一个带有二维列表(列表列表)的函数 数字作为参数并返回一个列表,其中包含每个的总和 柱。假设每行中的列数相同。
我知道如何遍历多维列表中的行,但是如何遍历多维列表的列元素时遇到了问题。我只是python的初学者。我没有逻辑可以使用for循环或任何列表操作方法。我还没有遇到过lambda或其他任何类型的高级主题。任何帮助将不胜感激。
答案 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