python: reduce()函数、lambda函数、map()函数

来源:互联网 发布:阿里云客服怎么样 编辑:程序博客网 时间:2024/05/17 00:07

reduce()

python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。

>>> def myadd(x, y):             return x + y  >>>  sum = reduce(myadd, (1, 2, 3, 4, 5, 6, 7))  >>>  print sum  >>>  28

也可以用lambda的方法,更为简单:

    sum = reduce(lambda x, y: x + y,(1, 2, 3, 4, 5, 6, 7))      print sum 

lambda函数:

lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

f = lambda x, y: x + y

用lambda求阶乘:

func = lambda x, y : x * yN = reduce(func, range(1, 10))

range()前是lambda函数,是一个二元函数
用reduce对range(1,n)进行求阶乘

map()

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
举例说明,比如我们有一个函数f(x)=x%2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现

如何打开list[list]内的内容,并重新构成一个list[]

example:input: list1 = [[1, 2, 3, 4],[5, 6]]output: returnList = [1, 2, 3, 4, 5, 6]
class Solution(object):    def addTwoList(list1, list2):        return list1.extend(list2)    def openAListOfLists(self, list0):        res = reduce(addTwoList, list0)        return res