[英]Regarding lambdas in python
我特別弱於python
我有一個定義如下的類:
class Employee:
def __init__(self, id, age):
self.age = age
self.id = id
我有一個λ閱讀:
expr = (0, lambda acc, e: max(acc, e.age), lambda x: x)
我從中收集了某種累加器,該累加器將e.age密鑰中的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中不可調試,因此這很難。
擴大我的評論,這就是使用標准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]
是映射謂詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.