如何添加2D列表的列元素并返回列表中的结果?
问题描述:
编写一个函数,它将 数字的二维列表(列表)作为参数,并返回一个列表,其中包含每个列的总和。假定每一行中的列数是相同的。如何添加2D列表的列元素并返回列表中的结果?
我知道如何遍历多维列表中的一行,但一直面临着如何遍历多维列表的列元素的问题。我只是一个Python初学者。没有任何逻辑可以用于循环或任何列表操作方法。我还没有遇到lambda或其他任何类型的高级话题。任何帮助,将不胜感激。
答
2维列表可以表示列表的列表。那就是
>>> 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
答
移调和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)]
然后在每一列映射和给你的总和为每个。
如果你喜欢一个列表比较:
In [5]: [sum(col) for col in zip(*arr)]
Out[5]: [5, 7, 9]
答
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
+0
请另外添加说明。 –
所以,你有** **嵌套列表。有趣的事实:你可以嵌套循环。 – Olaf