更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

自学Python教程【第七十一节】reduce 函数

  • 发布:Python培训
  • 来源:Crossin的编程教室
  • 时间:2019-03-19 11:19

欢迎大家来到自学Python教程教室,上一讲我们学习Python的Python 中一个比较有意思的内置函数 map,这节课我们来了解Python中另一个类似的函数reduce 函数的相关内容,来看看吧:

自学Python教程【第七十一节】reduce 函数

map 可以看作是把一个序列根据某种规则,映射到另一个序列。reduce 做的事情就是把一个序列根据某种规则,归纳为一个输出。

上例子。以前我们给过一个习题,求1累加到100的和。寻常的做法大概是这样:

sum = 0

for i in xrange(1, 101):

sum += i

print sum

如果用 reduce 函数,就可以写成:

lst = xrange(1, 101)

def add(x, y):

return x + y

print reduce(add, lst)

解释一下:

reduce(function, iterable[, initializer])

第一个参数是作用在序列上的方法,第二个参数是被作用的序列,这与 map 一致。另外有一个可选参数,是初始值。

function 需要是一个接收2个参数,并有返回值的函数。它会从序列 iterable 里从左到右依次取出元素,进行计算。每次计算的结果,会作为下次计算的第一个参数。

提供初始值 initializer 时,它会作为第一次计算的第一个参数。否则,就先计算序列中的前两个值。

如果把刚才的 lst 换成 [1,2,3,4,5],那 reduce(add, lst) 就相当于 ((((1+2)+3)+4)+5)。

同样,可以用 lambda 函数:

reduce((lambda x, y: x + y), xrange(1, 101))

所以,在对于一个序列进行某种统计操作的时候,比如求和,或者诸如统计序列中元素的出现个数等(可尝试下如何用 reduce 做到),可以选择使用 reduce 来实现。相对可以使代码更简洁。

我觉得,写代码的可读性是很重要的事情,简洁易懂的代码,既容易让别人看懂,也便于自己以后的维护。同时,较少的代码也意味着比较高的开发效率和较少的出错可能。应尽量避免写混乱冗长的代码。当然,也不用为了一味追求代码的精简,总是想方设法把代码写在一行里。那就又走了另一个极端,同样也缺乏可读性。而至于是否使用类似 map、reduce 这样的方法,也是根据需要和个人习惯,我认为并没有一定的规则限制。

顺便说句,Python3 里,reduce已经被移出内置函数,使用 reduce 需要先通过 from functools import reduce 引入。

恭喜您在Python自学的道路上又坚持了一天,今天我们学习了Python中reduce 函数的相关内容,下节课我们将分享更多Python中的相关内容,敬请关注 !

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:自学Python教程【第七十节】map 函数
下一篇:自学Python教程【第七十二节】多线程

【Git第八节】移除文件

【Python实战】四行Python代码就能知道你那的天气,你敢信?

Python实战【用Python写游戏第十三节】exe打包

Python实战【用Python写游戏第十二节】屡败屡战

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省