猿问

如何在列表列表中添加“子列表”的值

我的脚本中有一个列表列表:


list = [[1,2]

        [4,3]

        [6,2]

        [1,6]

        [9,2]

        [6,5]]

我正在寻找一种解决方案来总结列表列表中每个“子列表”的内容。所需的输出将是:


new_list = [3,7,8,7,11,11]

我知道将所有这些列表组合成一个:


new_list = [27,20]

但这不是我想要完成的。我需要将这些“子列表”中的两个值组合起来,并让它们在主列表中保留为它们自己的条目。


如果还解释了您如何解决问题而不是仅仅将解决方案交给我,我将不胜感激。我正在尝试学习 python,所以即使是一个小的解释也会非常感激。


不负相思意
浏览 101回答 2
2回答

哆啦的时光机

“手动”解决方案将使用 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”或其他名称。

拉丁的传说

使用列表理解。还要避免使用关键字作为变量名,在你的情况下你覆盖了内置的list.# a, b -> sequence unpackingsummed = [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 besummed2 = [sum(seq) for seq in lst]在此处详细了解强大的列表理解。
随时随地看视频慕课网APP

相关分类

Python
我要回答