zoukankan      html  css  js  c++  java
  • python中filter、map、reduce函数的使用

    1.filter

    功能:filter主要作用是过滤掉序列中不符合函数条件的元素,当序列中要删、减元素时,可以使用filter函数。

    格式:fliter(function,sequence)

    function可以是匿名函数或者自定义函数,它可以对后面的sequence序列的每个元素判定是否符合条件,返回True或者False,从而留下True的元素;sequence可以是列表、元组或者字符串。

    注意:迭代器需要进行列表转换

    #匿名函数
    import random
    allNum = []
    for i in range(9):
    allNum.append(random.randint(1,20))
    print(allNum)

    print(list(filter(lambda x:x%3,allNum)))

    #输出:

      #[8, 8, 9, 5, 4, 11, 19, 12, 1]
      #[8, 8, 5, 4, 11, 19, 1]

    #自定义函数
    import random
    def fun(x):
    return x%2

    allNum = []
    for i in range(9):
    allNum.append(random.randint(1,20))
    print(allNum)

    print(list(filter(fun,allNum)))
    #输出:

      #[12, 16, 6, 10, 7, 4, 4, 10, 17]
      #[7, 17]

    
    

    2.map

    功能:map主要作用是求一个序列或者多个序列进行函数映射之后的值。

    格式:map(function,iterable1,iterable2)

    function中参数值可以是一个,也可以是多个;后面的iterable代表function运算中的参数值,有几个参数值就传入几个iterable。

    注意:1.迭代器需要进行列表转换   2.map中如果传入的序列长度不一,会依据最短的序列计算

    #匿名函数
    x=[1,2,3,4]
    y=[3,4,6,8,8]
    print(list(map(lambda x,y:(x*y)+2,x,y)))

    #输出:[5, 10, 20, 34]
    
    
    #自定义函数
    x=[1,2,3,4]
    y=[3,4,6,8,8]

    def fun(x,y):
    return(x*y)+2


    print(list(map(fun,x,y)))

    #输出:[5, 10, 20, 34]

    3.reduce

    功能:reduce是对一个序列进行压缩运算,得到一个值。

    格式:reduce(function,iterable)

    function中必须传入两个参数,iterable可以是列表或者元组。

    注意:reduce使用前需要导包 from functools import reduce,map和filter是内置函数,所以可以直接调用.

    
    
    #匿名函数
    from functools import reduce
    x=[3,4,6,8,8]
    print(reduce(lambda x,y:(x+y),x))

    #输出:29
    #自定义函数
    from functools import reduce
    x=[3,4,6,8,8]
    def fun(x,y):
        return x+y
    print(reduce(fun,x))
    
    #输出:29

    计算原理:

    先计算头两个元素:f(3,4),结果为7;

    再把结果和第三个元素6计算:f(7,6),结果为13;

    再把结果和第四个元素8计算:f(13,8),结果为21;

    再把结果和第四个元素8计算:f(21,8),结果为29;

    计算完毕,返回结果29。


    一切技术都是为业务服务,脱离业务的技术一文不值!

  • 相关阅读:
    【Lua】Lua脚本及在Redis中的使用
    【php】php实现数组分块
    【git】git常用命令
    【PHP】php分隔字符串为数组
    【MYSQL】Mysql常用语句及命令
    键盘删除键长按只能删除一个字符,因为开启了键盘筛选键功能,解决方法
    JAVA基础知识总结:五
    linux常见命令
    JAVA基础知识总结:六
    写一个类时什么时候需要重写toString
  • 原文地址:https://www.cnblogs.com/bubutianshu/p/10958673.html
Copyright © 2011-2022 走看看