Сложить числа в строке с 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())