2024-05-20 00:04:34 发布
网友
我在python中有以下reduce函数,它应该返回字符串中所有字符的ASCII值之和。例如,对于字符串“BOY”,reduce函数应该返回234。在
reduce(lambda x,y:ord(x)+ord(y),list("BOY"))
但是我得到了以下错误:
我的代码有什么问题?在
这应该是
>>> reduce(lambda x, y: x + ord(y), "BOY", 0) 234
lambda函数的左操作数x将始终是上一次调用该函数的结果,因此它是一个整数。我们需要提供一个起始值0,但不需要将字符串转换为列表字符串本身是可读取的。在
x
0
如果按照Guido's recommendation to write the accumulation loop explicitly进行操作,则可以避免此问题:
为什么不sum(map(ord, "BOY"))?在
sum(map(ord, "BOY"))
想想这是如何减少的:
什么是ord(145) + ord('Y')?这是个错误。在
ord(145) + ord('Y')
其他人建议:
reduce(lambda x, y: x + ord(y), "BOY", 0)
减少如下:
0 'B' 'O' 'Y' 66 'O' 'Y' 145 'Y' 234
我建议
这应该是
lambda函数的左操作数
x
将始终是上一次调用该函数的结果,因此它是一个整数。我们需要提供一个起始值0
,但不需要将字符串转换为列表字符串本身是可读取的。在如果按照Guido's recommendation to write the accumulation loop explicitly进行操作,则可以避免此问题:
^{pr2}$为什么不
sum(map(ord, "BOY"))
?在想想这是如何减少的:
^{pr2}$什么是
ord(145) + ord('Y')
?这是个错误。在其他人建议:
减少如下:
我建议
相关问题 更多 >
编程相关推荐