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]
在此处详细了解强大的列表理解。
添加回答
举报