‫让我们来谈谈最后一个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一开始有点难以理解, 要真正使用它确实需要一些练习,
‫但它是高级程序员非常非常喜欢的东西之一, 随着你越来越好,
‫你会在你的职业生涯中看到越来越多｡
‫下次见｡
‫再见, 再见, 再见