我在python中很弱,尤其是
我有一个定义如下的类: -
class Employee:
def __init__(self, id, age):
self.age = age
self.id = id
我有一个lambda: -
expr = (0, lambda acc, e: max(acc, e.age), lambda x: x)
从我收集它的某种累加器,它在e.age键中占用年龄元素的最大值。
所以我的第一个猜测就是将员工列表传递给expr: -
employeeList = []
for i in range(1, 10):
employeeList.append(Employee(i, 20))
maxAge = expr(employeeList)
但它会出现以下错误: -
TypeError: 'tuple' object is not callable
有人可以帮助我阅读这个lambda,特别是要传递给这个expr的是什么?由于lambda在python中不可调试,这很难。
答案 0 :(得分:2)
扩展我的评论,以及如何使用标准Python函数完成代码:
from functools import reduce
# your code
maxAge = reduce(expr[1], map(expr[2], employeeList), expr[0])
甚至
def map_reduce(iterable, initializer, reduce_pred, map_pred):
return reduce(reduce_pred, map(map_pred, iterable), initializer)
maxAge = map_reduce(employeeList, *expr)
此处,expr[0]
是初始化程序,expr[1]
是缩减谓词,expr[2]
是地图谓词。