編寫一個函數,它將 數字的二維列表(列表)作爲參數,並返回一個列表,其中包含每個列的總和。假定每一行中的列數是相同的。如何添加2D列表的列元素並返回列表中的結果?
我知道如何遍歷多維列表中的一行,但一直面臨着如何遍歷多維列表的列元素的問題。我只是一個Python初學者。沒有任何邏輯可以用於循環或任何列表操作方法。我還沒有遇到lambda或其他任何類型的高級話題。任何幫助,將不勝感激。
編寫一個函數,它將 數字的二維列表(列表)作爲參數,並返回一個列表,其中包含每個列的總和。假定每一行中的列數是相同的。如何添加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
請另外添加說明。 –
所以,你有** **嵌套列表。有趣的事實:你可以嵌套循環。 – Olaf