让我们来谈谈最后一个reduce, 这个比较高级,
一开始可能会有点难掌握, 但知道它存在是很好的, 你可以通过练习和阅读一些文档来学习它｡
现在Reduce并不是python内置函数的一部分｡
为了使用reduce, 我们必须这样做｡
你们以前从未见过这个, 我们将在本课程的模块部分介绍它｡
但实际上, 当我们下载Python解释器和Python包的时候, 在我们的例子中,
这个涟漪已经为我们做了｡
我们可以从这些时髦的工具中导入一些东西, 而时髦的工具就是我们所说的工具带,
我们可以将其用于python安装附带的功能性工具｡
从那里我们可以导入一个特定的函数｡
所以我说, 嘿, 从这个工具带的funk工具中, 我想让你们导入reduce函数,
这样我们就可以在代码中再次使用它, 我们稍后会在课程中介绍｡
所以现在, 只需要复制并粘贴这一行｡
接下来, 让我们删除一些列表, 在这里使用reduce｡
现在使用reduce, 我们需要一些东西｡
第一次｡
我们需要函数｡
然后我们需要序列或数据｡
那么函数是什么呢？
首先, 我们的数据将是我们的我的列表｡
所以我会说我的列表和简化函数允许我们做一些有趣的事情｡
我可以给予它一个函数, 这个函数叫它累加器.
累加器有两个参数｡
记住, 这是由reduce调用的.
所以Reduce将负责从我们给予它的数据中给出这两个参数, 这是我的列表｡
第一个参数是累加器, 在我的例子中是ACC｡
接下来是这个项目｡
有趣的是, 当我们第一次从reduce函数传递list时, 我们会得到第一个项.
第一项将位于此参数中｡
不过, 这阿西西到底是什么来头｡
好吧, 如果我把括号去掉｡
并显示您的减少｡
你看我们有这个功能｡
序列, 在我们的例子中是我们的列表｡
然后初始值和初始值就是累加器的值｡
所以再一次, 假设我们有一个累加器函数, 我们还不打算调用它｡
Reduce将为我们做到这一点｡
我会把清单给予它｡
或者我们要迭代的数据｡
然后我给予它一个初始值0｡
所以我们有三个｡
这里的参数或者我们给予它的三个参数｡
让我把括号合上｡
你去那里｡
让我们把这里放大一点确保我能拼出来｡
在这里, 第一项就是我清单中的第一项｡
如果我们给予它任何东西, 累加器就会默认为零｡
或者在我们的例子中, 我们已经说过累加器将为零｡
我们要做的第一件事就是返回accumulator + item.
好吧, 我会的
所以让我们一个一个来讨论｡
我在这里打印累加器和项目, 这样我们就能看到了｡
然后我运行这个代码｡
对象中的第15行是不可迭代的｡
这有点棘手, 但我们实际上不再需要这个列表了, 因为Reduce会为我们做一些有趣的事情｡
我们先把它去掉, 然后返回reduce在输出中给出的结果.
如果我单击“运行”｡
你看那个｡
好吧, 刚才发生了什么？
我们来看看｡
减少｡
允许我们减少一些东西, 从我们给予它的可迭代对象中减少一些值｡
所以让我们一步一步来｡
我们有了我的列表, 我的列表将通过reduce应用于accumulator｡
累加器会接受我的列表, 在第一次遍历时它会说, 嘿,
我的累加器是什么？
我把它设为零｡
因此, 第一次通过累加器的结果将为零｡
一个项是1, 就是我们在这里看到的, 我们要把它加0加1.
所以现在我们已经返回了一个｡
现在第二条路要走｡
会发生什么事｡
第二次通过累加器将是返回的结果｡
所以下一次传递的结果将被填入累加器｡
所以在我们的例子中, 0加1等于1｡
项将｡
一加二等于三｡
所以一加二等于三｡
所以下一次, 累加器将是3, 我们通过的将是3,
正如你在这里看到的｡
三加三等于六｡
我们刚刚累加了所有这些值并返回了一个数字6｡
我们将列表简化为某种数据, 在我们的例子中, 我们使用了accumulator｡
但在这里我可以做任何我想做的事｡
例如, 如果我将其更改为不等于10, 如果我单击“运行”, 您认为会发生什么情况？
我得到了16, 因为我的初始累加器是10, 所以是10加1, 以此类推.
现在, 它的功能非常强大, 因为你可以用它做很多事情｡
它非常非常灵活｡
实际上, 像map filter这样的函数实际上是使用reduce的,
所以你可以使用reduce来构建你自己的map和filter函数｡
同样, reduce一开始有点难以理解, 要真正使用它确实需要一些练习,
但它是高级程序员非常非常喜欢的东西之一, 随着你越来越好,
你会在你的职业生涯中看到越来越多｡
下次见｡
再见, 再见, 再见