使用 lambda 函数对数字求和和计算数字
Using lambda functions to sum digits and count digits
如何将这两个函数转换为使用 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)
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)
顺便说一句,现在 不适合 使用 lambda 表达式,因为您需要函数名称才能让它们调用自己。 lambda 的关键在于它们是匿名的。
对 lambda 的主体使用 conditional expression:
>>> 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.
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))
print(list(map(lambda x: sum(int(i) for i in str(x)),list(map(int,input().split())))))
这可能有助于在同一行中阅读和使用 lambda 函数。
如何将这两个函数转换为使用 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)
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)
顺便说一句,现在 不适合 使用 lambda 表达式,因为您需要函数名称才能让它们调用自己。 lambda 的关键在于它们是匿名的。
对 lambda 的主体使用 conditional expression:
>>> 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.
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))
print(list(map(lambda x: sum(int(i) for i in str(x)),list(map(int,input().split())))))
这可能有助于在同一行中阅读和使用 lambda 函数。