Преобразование функций Python с несколькими операторами в лямбды - PullRequest
0 голосов
/ 19 октября 2019

Я совершенно новичок в Python, и мне было дано задание переписать две функции Python, используя Y-комбинатор. Для этого мне нужно сначала преобразовать их в лямбды, и вот в чем проблема - у них обоих есть несколько утверждений, и у меня возникают проблемы с тем, чтобы сделать их лямбда-совместимыми. Я читал об использовании кортежей или списков, но в моем случае это не работает.

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:])

Например, я попытался написать последнюю функцию в виде следующей лямбда-выражения:

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

Но есть синтаксическая ошибка с назначением в списке.

Не могли бы вы указать мне правильное направление, когда речь идет об обеих этих функциях?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...