在 python 中使用 reduce 的一行代码
oneliner using reduce in python
我正在努力将我的 Python 技能(初学者)提升到一个新的水平。
我正在尝试自学 functools.reduce() 函数
所以我 运行 每次都陷入同样的错误;
如果有人能向我解释我的代码中的问题是什么,我将不胜感激
我正在尝试构建一个简单的函数来接收一个数字和 return 数字的总和
import functools
def sum_using_reduce(number):
return str(number)[0] + str(number)[1]
number = 104
print(functools.reduce(sum_using_reduce, number))
试试这个:
number = 104
functools.reduce(lambda x, y: x+y, [int(i) for i in str(number)])
输出:5
使用你的例子:
import functools
def sum_using_reduce(x, y) -> int:
return x + y
print(functools.reduce(sum_using_reduce, [int(i) for i in str(105)]))
输出:6
另一种方法:
import functools
def sum_using_reduce(number: int) -> int:
return functools.reduce(lambda x, y: x+y, [int(i) for i in str(number)])
print(sum_using_reduce(124))
输出:7
在您的 sum_using_reduce
函数中,您试图对两个字符串求和,这将简单地执行连接。此外,您提供了一个整数作为 reduce 函数的第二个参数,其中 reduce 函数需要提供一个可迭代对象。
下面是满足这两个要求的解决方案:
from functools import reduce
number=104
print(reduce(lambda x,y:x+y,map(int,str(number))))
map(int,str(number))
将数字转换为字符串 (104->"104") 然后将字符串中的每个字符转换为整数,返回一个可迭代的映射对象 ("104"->[1, 0,4]).
lambda x,y:x+y
是一个接受两个整数并对它们求和的函数。
我正在努力将我的 Python 技能(初学者)提升到一个新的水平。 我正在尝试自学 functools.reduce() 函数
所以我 运行 每次都陷入同样的错误; 如果有人能向我解释我的代码中的问题是什么,我将不胜感激
我正在尝试构建一个简单的函数来接收一个数字和 return 数字的总和
import functools
def sum_using_reduce(number):
return str(number)[0] + str(number)[1]
number = 104
print(functools.reduce(sum_using_reduce, number))
试试这个:
number = 104
functools.reduce(lambda x, y: x+y, [int(i) for i in str(number)])
输出:5
使用你的例子:
import functools
def sum_using_reduce(x, y) -> int:
return x + y
print(functools.reduce(sum_using_reduce, [int(i) for i in str(105)]))
输出:6
另一种方法:
import functools
def sum_using_reduce(number: int) -> int:
return functools.reduce(lambda x, y: x+y, [int(i) for i in str(number)])
print(sum_using_reduce(124))
输出:7
在您的 sum_using_reduce
函数中,您试图对两个字符串求和,这将简单地执行连接。此外,您提供了一个整数作为 reduce 函数的第二个参数,其中 reduce 函数需要提供一个可迭代对象。
下面是满足这两个要求的解决方案:
from functools import reduce
number=104
print(reduce(lambda x,y:x+y,map(int,str(number))))
map(int,str(number))
将数字转换为字符串 (104->"104") 然后将字符串中的每个字符转换为整数,返回一个可迭代的映射对象 ("104"->[1, 0,4]).
lambda x,y:x+y
是一个接受两个整数并对它们求和的函数。