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

这里如何使用reduce功能?

这里如何使用reduce功能?

largeQ 2021-04-01 13:11:47
我试图找到一个元组中所有整数的总数from  functools  import reducemarks =  [("Jon" ,29 ), ("santi",35), ("anna",35)]Total_marks = lambda x,y: x[1]print(marks)print (reduce(Total_marks,marks))上面的代码可以采用整数的第一个值,但是我想找到所有整数的总和,如何在python中使用reduce做到这一点
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

更改添加函数的定义(此处无需使用lambda表示法):


def total_marks(x, y): 

    return x + y[1]

并reduce通过提供第三个可选参数来判断初始值是一个数字,而不是一个元组:


reduce(total_marks, marks, 0)

#99

与lambda相同的解决方案:


reduce(lambda x,y: x+y[1], marks, 0)

还有一个不使用的解决方案reduce:


_, y = zip(*marks)

sum(y)

#99


查看完整回答
反对 回复 2021-04-27
?
万千封印

TA贡献1891条经验 获得超3个赞

如果没有必要使用reduce,那么一个更优雅的解决方案是


marks =  [("Jon" ,29 ), ("santi",35), ("anna",35)]

total_marks = sum(score for _, score in marks)

print(total_marks)


查看完整回答
反对 回复 2021-04-27
?
千巷猫影

TA贡献1829条经验 获得超7个赞

你会用operator.itemgetter(1)得到的数字出来的元组,并reduce与operator.add总结他们


from  functools  import reduce

from operator import itemgetter, add

marks =  [("Jon" ,29 ), ("santi",35), ("anna",35)]


print(reduce(add, map(itemgetter(1), marks)))

# 99

没有的更简单的解决方案reduce是sum(mark for name, mark in marks)


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

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