如何使用lambda插入列表中两个其他值的和

-1 投票
2 回答
1883 浏览
提问于 2025-04-28 20:51

这是我目前的代码:

# Defining the results
Results =[["Harry",20,25],["Sandra",10,12],["Michelle",23,21],["Mike",18,16]]

#Adding the two test scores and appending them onto each persons list
Results.insert(lambda [x][3],Results[x][1] + Results[x][2])

#Printing the result to check the insert worked
print(Results)
#

我想把每个用户的两个测试结果(分别在列表的第1和第2个位置)合并,生成一个新的结果放在第3个位置,也就是每个用户自己列表的最后面。

我尝试过使用.insert()函数和lambda函数来实现这个功能。但是在第五行(箭头指向的地方)出现了语法错误,我不太确定怎么用lambda来完成这个操作。我也试过用.append()函数,但也没有成功。

                      ↓
Results.insert(lambda [x][3],result[x][1] + result[x][2])
暂无标签

2 个回答

1

根据我理解你的问题,下面是我的回答:

results = map(lambda x: [x[0],x[1],x[2],x[1]+x[2]], results)

我修改了上面的代码,让它返回一个列表的列表,而不是元组,这是我的错误。这个代码会把结果 [["Harry",20,25],["Sandra",10,12],["Michelle",23,21],["Mike",18,16]] 转换成 [['Harry', 20, 25, 45], ['Sandra', 10, 12, 22], ['Michelle', 23, 21, 44], ['Mike', 18, 16, 34]] 这样的格式。

3

我建议用一种叫做列表推导式的方法来重建这个列表,像这样:

>>> [result + [result[1] + result[2]] for result in Results]
[['Harry', 20, 25, 45], ['Sandra', 10, 12, 22], ['Michelle', 23, 21, 44], ['Mike', 18, 16, 34]]

我们会遍历Results列表,对于每一个单独的结果,我们会创建一个新的结果列表,最后一个元素是第二个和第三个元素的和。

补充:如果你想用lambda,可以把列表推导式换成map函数,像这样:

>>> map(lambda result: result + [result[1] + result[2]], Results)

撰写回答