繁体   English   中英

在python中使用reduce的oneliner

[英]oneliner using reduce in python

我正在努力将我的 Python 技能(初学者)提升到一个新的水平。 我正在尝试自学 functools.reduce() 函数

所以我每次都遇到同样的错误; 如果有人能向我解释我的代码有什么问题,我将不胜感激

我正在尝试构建一个简单的函数来接收一个数字并返回数字的总和

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是一个函数,它接受两个整数并将它们相加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM