2 回答

TA貢獻1779條經驗 獲得超6個贊
“手動”解決方案將使用 for 循環。
new_list = []
for sub_list in list:
new_list.append(sum(sub_list))
或作為列表理解:
new_list = [sum(sub_list) for sub_list in list]
for 循環遍歷列表的元素。在您的例子中,list是一個列表列表。所以每個元素本身就是一個列表。這意味著在迭代時,sub_list 是一個簡單的列表。為了獲得列表的總和,我使用了sum()內置函數。您當然可以手動迭代并對每個元素求和:
new_list = []
for sub_list in list:
sum_val = 0
for element in sub_list:
sum_val = sum_val + element
new_list.append(sum_val)
但沒有必要。
更好的方法是使用numpy,它允許您按軸求和,因為它在列表列表中看起來像數組。由于您正在學習基本的 python,因此了解 numpy 還為時過早。請記住,有一個用于處理多維數組的包,它允許它根據您的選擇執行一些操作,例如在軸上求和。
編輯:我看到了其他解決方案的建議。由于兩者都有效,我相信對于第一次學習編程的人來說,這個解決方案更“易于理解”。使用列表理解很好而且正確,但在第一次學習時可能會有點混亂。同樣如建議的那樣,調用變量list是一個壞主意,因為它是關鍵字。更好的名稱是“my_list”、“tmp_list”或其他名稱。

TA貢獻1789條經驗 獲得超8個贊
使用列表理解。還要避免使用關鍵字作為變量名,在你的情況下你覆蓋了內置的list.
# a, b -> sequence unpacking
summed = [a + b for a, b in lst] # where lst is your list of lists
# if the inner lists contain variable number of elements, a more
# concise solution would be
summed2 = [sum(seq) for seq in lst]
在此處詳細了解強大的列表理解。
添加回答
舉報