使用lambda函数对数字和计数数字求和

时间:2017-04-09 02:30:22

标签: 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_digit(number/10)

5 个答案:

答案 0 :(得分:4)

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)

顺便说一句,这是时间使用lambdas,因为你需要函数名称才能让它们自己调用。 lambdas的观点是他们是匿名的。

答案 1 :(得分:3)

使用conditional expression作为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)

另外,如果首选使用//进行除法,那么代码仍然可以在Python 3中使用。

答案 2 :(得分:0)

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上工作......

答案 3 :(得分:0)

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

.log

答案 4 :(得分:0)

print(list(map(lambda x: sum(int(i) for i in str(x)),list(map(int,input().split())))))

这对于在同一行上阅读和使用 lamda 函数可能很有用。