簡體   English   中英

關於python中的lambda

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM