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
TA贡献1891条经验 获得超3个赞
如果没有必要使用reduce,那么一个更优雅的解决方案是
marks = [("Jon" ,29 ), ("santi",35), ("anna",35)]
total_marks = sum(score for _, score in marks)
print(total_marks)
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)
添加回答
举报