这里如何使用reduce功能?

我试图找到一个元组中所有整数的总数


from  functools  import reduce

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


Total_marks = lambda x,y: x[1]


print(marks)

print (reduce(Total_marks,marks))

上面的代码可以采用整数的第一个值,但是我想找到所有整数的总和,如何在python中使用reduce做到这一点


largeQ
浏览 197回答 3
3回答

哆啦的时光机

更改添加函数的定义(此处无需使用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

万千封印

如果没有必要使用reduce,那么一个更优雅的解决方案是marks =  [("Jon" ,29 ), ("santi",35), ("anna",35)]total_marks = sum(score for _, score in marks)print(total_marks)

千巷猫影

你会用operator.itemgetter(1)得到的数字出来的元组,并reduce与operator.add总结他们from  functools  import reducefrom operator import itemgetter, addmarks =  [("Jon" ,29 ), ("santi",35), ("anna",35)]print(reduce(add, map(itemgetter(1), marks)))# 99没有的更简单的解决方案reduce是sum(mark for name, mark in marks)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python