鱼C论坛

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

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

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

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

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

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

Python 重构 reduce() 函数


要求

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


格式

  1. def reduce(func, iterable, initial=None):
  2.     # write your code here
复制代码


例子

  1. >>> reduce(lambda x, y: x + y, [1, 2, 3, 4, 5, 6])
  2. 21
  3. >>> reduce(lambda x, y: x * 10 + y, [3, 6, 3, 8])
  4. 3638
  5. >>> reduce(lambda x, y: x * y, [1, 3, 5, 7])
  6. 105
  7. >>> reduce(lambda x, y: x * y, [1, 3, 5, 7], 10)
  8. 1050
复制代码


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

  3.     if initial is NotImplemented:
  4.         try:
  5.             initial=next(iterator)

  6.         except StopIteration:
  7.             raise TypeError("reduce() of empty sequence with no initial value")
  8.    
  9.     for i in initial:
  10.         initial=function(initial,i)

  11.     return initial
复制代码

评分

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

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 21:36:02 | 显示全部楼层
reduce为什么代码中禁止使用 filter() BIF?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  3.     if initial is NotImplemented:
  4.         try:
  5.             initial=next(iterator)

  6.         except StopIteration:
  7.             raise TypeError("reduce() of empty sequence with no initial value")
  8.    
  9.     for i in initial:
  10.         initial=function(initial,i)

  11.     return initial
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 22:15:24 | 显示全部楼层
就我一个回答了啊……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好可怜,捞一捞
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 10:13:49 From FishC Mobile | 显示全部楼层
I THINK I AM NOT SURE. I CANNOT RECONSTRUCT THE FUNCTION reduce().
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 22:23:33 | 显示全部楼层
都没继续更新了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 16:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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