簡體   English   中英

如何將該lambda函數轉換為def格式?

[英]How do I transform this lambda function into def format?

我在這里找到了這個問題的答案( 如何為任意列表建立遞歸? ),但是我還沒有學會如何使用lambdas

prune = lambda tree : [prune(branch) for branch in tree if branch != []]

l = [[[[], []], [[], []]], [[], [], []]]
print prune(l)

我檢查了許多網站,但似乎無法設法將其轉換為常規功能,例如:

def prune(tree):
    for branch in tree:
        if branch!=[]:
             prune(branch)
    return branch

print prune([[[[], []], [[], []]], [[], [], []]])

有人可以告訴我在修剪之前和結束時要用那些大方括號嗎?

您所要做的就是在前面打return

def prune(tree):
    return [prune(branch) for branch in tree if branch != []]

如果您想分解列表的理解 ,並且沒有真正的理由,那就是:

def prune(tree):
    for branch in tree:
        if branch != []:
            yield prune(branch)

要么:

def prune(tree):
    branches = []

    for branch in tree:
        if branch != []:
            branches.append(prune(branch))

    return branches

使用單個return語句,lambda總是很容易轉換為def:

f = lambda a: b

總是幾乎

def f(a):
    return b

如果您需要在沒有列表理解的情況下進行示例:

def prune(tree):
    ret = []
    for branch in tree:
        if branch!=[]:
            ret.append(prune(branch))
    return ret

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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