python: lambda, filter, map, reduce 用法

    xiaoxiao2021-03-25  88

    lambda

    创建一个匿名函数

    >>> f = lambda a, b, c: a * b + c >>> f(3,4,5) 17

    匿名函数,函数内只能有一个表达式,不用写return,返回值就是该表达式的结果。a,b,c是接收的参数,a*b+c就是函数的返回结果。

    filter

    >>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> output_list = filter(lambda x: x > 5, my_list) >>>> output_list [6, 7, 8, 9]

    返回my_list中符合过滤规则lambda x: x > 5的子集。

    map

    >>> my_list = [1, 5, 7, 8, 11] >>> output_list = map(lambda x: x * x, my_list) >>> output_list [1, 25, 49, 64, 121]

    将函数作用到my_list的每个元素。

    >>> new_list = [-4, 3, 2, -6, 5] >>> map(lambda x, y: x + y, my_list, new_list) [-3, 8, 9, 2, 16]

    可以接收多个list,2个以上的以此类推

    reduce

    >>> reduce(lambda a, b: a * b, my_list)

    用给定的函数lambda a, b: a * b迭代处理my_list参数,得到一个值。

    def func(x, y): print (x, y) return x + y my_list = [1,2,3] print 'result = %s' % reduce(func, [1,2,3]) (1, 2) (3, 3) result = 6

    初始使用my_list中的前两个元素计算: 1+2,得到结果3 再使用上一部的结果3和下一个元素3再计算:3+3,得到结果6

    def func(x, y): print (x, y) return x + y my_list = [1,2,3] print 'result = %s' % reduce(func, [1,2,3], 10) (10, 1) (11, 2) (13, 3) result = 16

    也可以指定初始迭代值,如果有这个参数,那么第一个的计算就是10+1。

    参考: Understanding Filter, Map, And Reduce In Python

    转载请注明原文地址: https://ju.6miu.com/read-32545.html

    最新回复(0)