reduce()函数

  • Post author:
  • Post category:其他


reduce()函数在Python 2中是内置函数,在Python 3中被移到了

functools

模块;



reduce()函数的语法

如下:

reduce(function,iterable,initial)
  • 第一个参数是函数function,reduce()只能接受一个带有两个参数的函数;
  • 第二个参数是iterable,即可迭代对象,可以是列表、字符串等序列;
  • 第三个参数为初始值,可选可不选,但前两个参数是必须的;



reduce()的用法:



reduce()函数将一个序列内的所有元素按照序列顺序依次传入func函数中,并将得到的值继续作为参数与下一个序列中的元素进行操作,一直重复到序列中无元素为止;

注意到reduce()的参数函数有两个参数了吧,如果没有指定初始值的话,那么传入函数的就是序列的前两个值,如果指定了初始值,那么传入的就是初始值和序列的第一个值;

纯文字说明表述太差,直接看代码吧:

利用reduce()函数的

几个例子


1.给定一个序列,对序列的每一个值求和并输出

from functools import reduce
a = [1,2,3,4,5]
print(reduce(lambda x,y:x+y,a)) #15

当然如果求和的直接用Python的内建函数sum()会更方便;


2.给定一个字符串,将它反转输出

from functools import reduce
s = "hello world"
print(reduce(lambda x,y:y+x,s)) #dlrow olleh


3.给定一个字符串型的数字串,将它转换为整数,例如 “19727” 转换为 19727;

from functools import reduce
dic = {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'0':0}
def sti(c):
    return dic[c]
print(reduce(lambda x,y:10*x+y,map(sti,'19727'))) #19727



版权声明:本文为ckk727原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。