将具有多个语句的Python函数转换为lambdas

时间:2019-10-19 08:41:48

标签: python function lambda y-combinator

我对Python完全陌生,我被赋予了使用Y组合器重写两个Python函数的任务。为此,我必须先将它们转换为lambda,这是问题所在-它们都具有多个语句,并且在使它们与lambda兼容方面存在麻烦。我一直在阅读有关使用元组或列表的信息,但这似乎不适用于我的情况。

def count(word_list, stopwords, wordfreqs):
    if word_list == []:
        return
    else:
        word = word_list[0]
        if word not in stopwords:
            if word in wordfreqs:
                wordfreqs[word] += 1
            else:
                wordfreqs[word] = 1
        count(word_list[1:], stopwords, wordfreqs)

def wf_print(wordfreq):
    if wordfreq == []:
        return
    else:
        (w, c) = wordfreq[0]
        print(w, '-', c)
        wf_print(wordfreq[1:])

例如,我尝试将最后一个函数编写为以下lambda:

wf_print = (lambda wordfreq:
    None 
    if wordfreq == [] 
    else 
    [None, (w, c) = wordfreq[0], print(w, '-', c), wf_print(wordfreq[1:])][0]
)

但是列表中的赋值有语法错误。

在涉及这两个功能时,您能指出正确的方向吗?

0 个答案:

没有答案