3 回答
TA贡献1831条经验 获得超9个赞
正如其他人指出的那样,您的错误的原因是您的map
函数的第二个参数是一个整数a % 10
,但它应该是一个可迭代的。
这是一个满足您的问题要求的单行:它创建一个函数,该函数返回一个非负整数的数字之和,并同时使用lambda
和map
。它还使用int
andstr
但这并不违反您规定的要求。这是有效的,因为str(a)
返回一个字符串,它是数字的数字的可迭代。每个数字是一个 1 个字符的字符串,在求和之前必须将其转换为整数。在map
做这种转换。
sum_of_digits = lambda a: sum(map(int, str(a)))
TA贡献1752条经验 获得超4个赞
有一个有趣的小递归版本使用and
:
sum_of_digits = lambda n: n and n%10 + sum_of_digits(n//10)
如果n
为假(即零),则返回n
,否则返回最低有效数字和n//10
如果您使用的是 Python 2,则必须 from __future__ import division
TA贡献1847条经验 获得超7个赞
Map 接受一个函数并将其应用于一些可迭代的事物。你没有给它一个可迭代的东西,只是一个函数。
尝试这样的事情
import math
sum_of_digits = lambda x: sum([int(c) for c in str(x)])
the_value_of_a_specific_digit = lambda x, d: int(x / 10 ** d % 10)
an_iterable_of_number_of_digits = lambda x: range(int(math.log(x, 10))+1)
a_combined_function = lambda x: sum(map(func, iterable))
def main():
print(sum_of_digits(104))
if __name__ == '__main__':
main()
添加回答
举报