2 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
“手動(dòng)”解決方案將使用 for 循環(huán)。
new_list = []
for sub_list in list:
new_list.append(sum(sub_list))
或作為列表理解:
new_list = [sum(sub_list) for sub_list in list]
for 循環(huán)遍歷列表的元素。在您的例子中,list是一個(gè)列表列表。所以每個(gè)元素本身就是一個(gè)列表。這意味著在迭代時(shí),sub_list 是一個(gè)簡(jiǎn)單的列表。為了獲得列表的總和,我使用了sum()內(nèi)置函數(shù)。您當(dāng)然可以手動(dòng)迭代并對(duì)每個(gè)元素求和:
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,它允許您按軸求和,因?yàn)樗诹斜砹斜碇锌雌饋硐駭?shù)組。由于您正在學(xué)習(xí)基本的 python,因此了解 numpy 還為時(shí)過早。請(qǐng)記住,有一個(gè)用于處理多維數(shù)組的包,它允許它根據(jù)您的選擇執(zhí)行一些操作,例如在軸上求和。
編輯:我看到了其他解決方案的建議。由于兩者都有效,我相信對(duì)于第一次學(xué)習(xí)編程的人來說,這個(gè)解決方案更“易于理解”。使用列表理解很好而且正確,但在第一次學(xué)習(xí)時(shí)可能會(huì)有點(diǎn)混亂。同樣如建議的那樣,調(diào)用變量list是一個(gè)壞主意,因?yàn)樗顷P(guān)鍵字。更好的名稱是“my_list”、“tmp_list”或其他名稱。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用列表理解。還要避免使用關(guān)鍵字作為變量名,在你的情況下你覆蓋了內(nèi)置的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]
在此處詳細(xì)了解強(qiáng)大的列表理解。
添加回答
舉報(bào)