zoukankan      html  css  js  c++  java
  • python库函数Map, Filter and Reduce的用法

      python中有三个函数式编程极大的简化了程序的复杂性,这里就做一下讨论和记录。

    一 Map:应用在链表输入所有元素的函数,它的格式如下所示:

           map(function_to_apply, list_of_inputs)

      大多数情况下,我们会把一个链表中的元素一个个输入到函数中来获取结果,代码如下所示:      

    items = [1, 2, 3, 4, 5]
    squared = []
    for i in items:
        squared.append(i**2)

      map就可以把这个函数简化,如下所示:

      

    items = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x**2, items))

      大多数情况下,我们把 lambda结合map一起使用,替代传统的输入,如下所示:

        

    def multiply(x):
        return (x*x)
    def add(x):
        return (x+x)
    
    funcs = [multiply, add]
    for i in range(5):
        value = list(map(lambda x: x(i), funcs))
        print(value)
    
    # Output:
    # [0, 0]
    # [1, 2]
    # [4, 4]
    # [9, 6]
    # [16, 8]

    二  Filter:创建一个让函数返回为True的链表元素,下面是一个简洁的例子:

      

    number_list = range(-5,5)
    less_than_zero = list(filter(lambda x: x < 0, number_list))
    print(less_than_zero)
    
    number_list = range(-5,5)
    less_than_zero = list(filter(lambda x: x != 0, number_list))
    print(less_than_zero)

    三 reduce:在链表元素的循环计算方面有着广泛的用途,

      正常情况下,计算的是这样写的:

    product = 1
    list = [1, 2, 3, 4]
    for num in list:
        product = product * num
    
    # product = 24

      在使用reduce的情况下,是这样计算的:

    from functools import reduce
    product = reduce((lambda x, y: x * y), [1, 2, 3, 4])
    
    # Output: 24

      一下子简洁了很多。

    参考文档:

    1 http://book.pythontips.com/en/latest/map_filter.html 

      

  • 相关阅读:
    数组中[::-1]或[::-n]的区别,如三维数组[:,::-1,:]
    类中__iter__与__next__的说明
    LoadRunner 事务响应时间的组成
    LoadRunner 中调用c函数生成随机字符串
    LoadRunner系列之—-02 基于webservice协议的接口测试(脚本实例)
    java 生成压测数据
    java实现从报文中获取投保单号
    接口测试怎么做
    LoadRunner中存储表格参数------关联数组
    视频录制软件&远程支持软件
  • 原文地址:https://www.cnblogs.com/dylancao/p/9023679.html
Copyright © 2011-2022 走看看