Сложить числа в строке с lambda

Подскажите, как можно в одну строку выполнить следующее задание:

Дана строка. Если в ней есть числа, то сложить эти числа. Иначе вывести 0.

Например:

'number here is 2' # == 2

'Petersen between 1845 and 1910 year' # == 3755, т.е. 1845 + 1910

'' # == 0

Попробовал с лямбда, но возникает вопрос: как проверить, что слово является числом?


Ответы (1 шт):

Автор решения: strawdog
a = 'Petersen between 1845 and 1910 year'
def myfunc(lst):
    return sum(map(lambda x: int(x) if x.isdigit() else 0, lst.split()))

print(myfunc(a))
print(myfunc('number here is 2'))
print(myfunc(""))

выведет, соответственно:

3755
2
0

То же самое с list comprehension:

def myfunc(lst):
    return sum(int(x) for x in lst.split() if x.isdigit())
→ Ссылка