鱼C论坛

 找回密码
 立即注册
查看: 1588|回复: 7

[已解决]Python 重构 reduce() 函数

[复制链接]
发表于 2020-3-31 21:35:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-4-1 22:13 编辑

Python 重构 reduce() 函数


要求

        1. 完整实现 functools.reduce() 的功能
        2. 代码中禁止使用 functools.reduce()


格式
def reduce(func, iterable, initial=None):
    # write your code here

例子
>>> reduce(lambda x, y: x + y, [1, 2, 3, 4, 5, 6])
21
>>> reduce(lambda x, y: x * 10 + y, [3, 6, 3, 8])
3638
>>> reduce(lambda x, y: x * y, [1, 3, 5, 7])
105
>>> reduce(lambda x, y: x * y, [1, 3, 5, 7], 10)
1050

NOW, IT'S YOUR SHOWTIME !
最佳答案
2020-3-31 21:37:16
def reduce(function, sequence, initial=NotImplemented):
    iterator=iter(sequence)

    if initial is NotImplemented:
        try:
            initial=next(iterator)

        except StopIteration:
            raise TypeError("reduce() of empty sequence with no initial value")
    
    for i in initial:
        initial=function(initial,i)

    return initial

评分

参与人数 1荣誉 +1 收起 理由
永恒的蓝色梦想 + 1

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 21:36:02 | 显示全部楼层
reduce为什么代码中禁止使用 filter() BIF?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 21:37:16 | 显示全部楼层    本楼为最佳答案   
def reduce(function, sequence, initial=NotImplemented):
    iterator=iter(sequence)

    if initial is NotImplemented:
        try:
            initial=next(iterator)

        except StopIteration:
            raise TypeError("reduce() of empty sequence with no initial value")
    
    for i in initial:
        initial=function(initial,i)

    return initial
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 22:15:24 | 显示全部楼层
就我一个回答了啊……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 22:16:20 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-1 22:15
就我一个回答了啊……

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 22:17:39 | 显示全部楼层

好可怜,捞一捞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 10:13:49 From FishC Mobile | 显示全部楼层
I THINK I AM NOT SURE. I CANNOT RECONSTRUCT THE FUNCTION reduce().
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 22:23:33 | 显示全部楼层
都没继续更新了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 09:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表