为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2023-03-16 15:37:08
我的脚本中有一个列表列表: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,所以即使是一个小的解释也会非常感激。
查看完整描述

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”或其他名称。


查看完整回答
反对 回复 2023-03-16
?
拉丁的传说

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]

在此处详细了解强大的列表理解。



查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信