Python 使用lambda函数求和和和计数位数

Python 使用lambda函数求和和和计数位数,python,recursion,lambda,python-2.x,ternary-operator,Python,Recursion,Lambda,Python 2.x,Ternary Operator,如何将这两个函数转换为使用lambda表示法 def sum_digits(number): if number == 0: return 0 else: return (number % 10) + sum_digits(number / 10) def count_digit(number): if number == 0: return 0 else: return 1 + count_dig

如何将这两个函数转换为使用lambda表示法

def sum_digits(number):
    if number == 0:
        return 0
    else:
        return (number % 10) + sum_digits(number / 10)

def count_digit(number):
    if number == 0:
        return 0
    else:
        return 1 + count_digit(number/10)
顺便说一句,现在使用lambdas不是时候,因为您需要函数名才能让它们自己调用。lambda的要点是它们是匿名的。

使用a作为lambda的主体:

>>> sum_digits = lambda n: 0 if n == 0 else (n % 10) + sum_digits(n // 10)
>>> count_digit = lambda n: 0 if n == 0 else 1 + count_digit(n // 10)
另外,if最好使用
/
进行除法,这样代码仍然可以在python3中工作

sum_digits = lambda number: 0 if number == 0 else (number % 10) + sum_digits (number//10)
count_digit = lambda number: 0 if number == 0 else 1 + count_digit(number//10)
print(sum_digits(2546))
print(count_digit(2546))

也将在python 3上工作…

面向字符串的方法不需要递归:

sum_of_digits = lambda n: sum(int(d) for d in str(n))
count_digit = lambda n: len(str(n))

这可能有助于在同一行上读取和使用lamda函数。

可能重复我认为如果我这样做是错误的,但只是有人要求使用这种替代方法,因为我将这两个函数转换为HOF-already。你的意思是要每个函数的非递归形式吗?不,我故意递归地写它们。我只是想知道如何用lambda符号代替函数本身。我的HOF是这样做的:数字(数字、术语)。现在我可以用lambda函数替换这个术语了。Python的一个优点是,你甚至不需要把它们写成lambda来实现这一点。将函数作为参数传入。如果我理解你的意图,你可以调用
数字(数字,和数字)
,即使它不是lambda。我知道,但我从来都不擅长lambda,因为我大部分时间看不到它的用途。在我的整个计划中,这是一个特别要求的评论。
sum_of_digits = lambda n: sum(int(d) for d in str(n))
count_digit = lambda n: len(str(n))
print(list(map(lambda x: sum(int(i) for i in str(x)),list(map(int,input().split())))))