关于python中的lambdas

时间:2015-03-06 00:11:42

标签: python lambda

我在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中不可调试,这很难。

1 个答案:

答案 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]是地图谓词。