另外,我不能双向将int转换为字符串,也不能使用列表理解
我不断收到相同的错误,但我不知道该如何处理...
这是代码:
sum_of_digits = lambda a: map(lambda b, c: b + sum_of_digits(c) if a > 10 else None, a % 10, a / 10) if a > 10 else None
def main():
print(sum_of_digits(104))
if __name__ == '__main__':
main()
这是错误:
TypeError: argument 2 to map() must support iteration
最佳答案
(此答案是针对该问题的先前版本,但不满足新的编辑版本的要求。)
正如其他人指出的那样,导致错误的原因是map
函数的第二个参数是一个整数a % 10
,但它应该是可迭代的。
这是一个满足您的问题要求的单行代码:它创建一个函数,该函数返回非负整数的数字总和,并使用lambda
和map
。它还使用int
和str
,但这并不违反您的要求。这是有效的,因为str(a)
返回一个字符串,该字符串是数字的可迭代数。每个数字都是1个字符的字符串,在求和之前必须将其转换为整数。 map
执行该转换。
sum_of_digits = lambda a: sum(map(int, str(a)))
关于python - 嗨,我有一项赋值,可以使用lambda并在python中映射,从而将一个数字的所有数字相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52750262/