当前位置: 首页 > 面试题库 >

reduce()有什么问题?

法玮
2023-03-14
问题内容

关于python
3.0中reduce()函数的更改以及如何删除它,网上似乎有很多热烈的讨论。我有点难以理解为什么会这样。我发现在各种情况下使用它是很合理的。如果蔑视仅仅是主观的,我无法想象会有这么多人关心它。

我想念什么?reduce()有什么问题?


问题答案:

正如Guido在Python
3000
帖子中的reduce()的命运中所说:

所以现在reduce()。实际上,这是我一直最讨厌的一个,因为,除了一些涉及+或*的示例,几乎每次我看到带有平凡函数参数的reduce()调用时,我都需要拿笔和纸来在我了解reduce()应该做什么之前,先绘制一下该函数实际输入的内容。因此,在我看来,reduce()的适用性几乎仅限于关联运算符,在所有其他情况下,最好显式地写出累加循环。

reduce在Functional Programming
HOWTO
文章中有一个很好的例子,令人困惑:

快速,以下代码在做什么?

total = reduce(lambda a, b: (0, a[1] + b[1]), items)[1]

您可以弄清楚,但是需要花一些时间来解开表达式以弄清楚发生了什么。使用简短的嵌套def语句会使事情变得更好一些:

def combine (a, b):
    return 0, a[1] + b[1]

total = reduce(combine, items)[1]

但是,如果我只是简单地使用for循环,那将是最好的:

total = 0
for a, b in items:
    total += b

或内置sum()和生成器表达式:

total = sum(b for a,b in items)

当将其作为for循环编写时,reduce()的许多用法会更清晰。



 类似资料:
  • 问题内容: 最近,我在一些最差的PHP实践中阅读了此线程。在第二个答案中,有一个关于的使用的简短讨论,我只是想知道所有有关的内容。 我个人使用它来切分给定的数组,例如或稍后在其中清理变量,因为它们已为我方便地命名。 这是不好的做法吗?这有什么风险?您对的使用有何看法? 问题答案: 我发现这只是一种不好的做法,因为它会导致许多变数,将来的维护者(或您自己在几周内)都不知道它们的来源。考虑这种情况:

  • 本文向大家介绍map-reduce程序运行的时候会有什么比较常见的问题相关面试题,主要包含被问及map-reduce程序运行的时候会有什么比较常见的问题时的应答技巧和注意事项,需要的朋友参考一下 比如说作业中大部分都完成了,但是总有几个reduce一直在运行 这是因为这几个reduce中的处理的数据要远远大于其他的reduce,可能是因为对键值对任务划分的不均匀造成的数据倾斜 解决的方法可以在分区

  • 问题内容: 我简直不敢相信我网站上正在发生的事情。当我添加此行时: 一切正常。如果我不这样做,CSS就会“混乱”,一切都会变得不同,布局也会变得“丑陋”。 这条线如何解决所有问题? 问题答案: 您正在将HTML与XHTML混合使用。 通常,声明用于区分HTMLish语言的版本(在这种情况下为HTML或XHTML)。 不同的标记语言将表现不同。我最喜欢的例子是。在浏览器中查看以下内容: XHTML

  • 问题内容: 该代码在第一个“等级”之后保持两次打印。有谁知道为什么要打印两次?我做错了“ For Loop”吗? 问题答案: 这是“两次打印”,因为当您按回车键输入一个字符时,实际上是在写两个字符:您键入的字符和(换行符)。 添加第二个调用以读取换行符: 同样,不需要初始化为in 也可以。实际上,在此循环中使用a没有意义,首选使用a 。

  • 问题内容: 我正在尝试使用openFileOutput函数,但它无法编译且无法识别该函数。我正在使用android sdk 1.6。这是SDK问题吗?这是参数问题吗? 问题答案: 您的方法应如下。将额外的上下文作为参数。对于这种方法,您可以通过您的服务或活动

  • 我的这段代码挑战了我所有的c语言知识。 在我的“64位 - Corei5 - Fedora - GCC”上,它打印出我喂养它的东西。但是在我朋友的系统上(32位,MS XP,最小值),它打印。我不明白为什么。有人知道吗? 顺便说一句:他的系统上的sizeof(unsigned long long int)是8。