zoukankan      html  css  js  c++  java
  • python map函数、filter函数、reduce函数

    1.map函数:map(func,可迭代对象):

    ①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

    ②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,再依次返回给原对象,结果与原列表的元素个数、顺序一致

    ③在python2中map的处理结果是一个列表,在python3中结果是一个迭代器,可通过list( )转换为列表查看内容,迭代器只可以进行一次处理操作,之后会清空

    print(list(map(lambda x:x*2,[1,6,3,7])))---使用匿名函数
    #执行结果为[1,36,9,49]
    li=[-3,0,2,-8,5]
    def cal(a):
        if a>=0:
            pass
        else :
           a=-a
        return a
    print('将负数转化为正数',list(map(cal,li)))  #使用自定义函数,传给map函数是自定义函数的函数名
    #将负数转化为正数 [3, 0, 2, 8, 5]

    2.filter函数:filter(func,可迭代对象):

    ①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

    ②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,处理结果返回一个布尔值,真则保留,否则删除这个元素

    ③与map函数类似,filter函数在python3中的结果是一个迭代器,需通过list( )转换为列表查看内容

    print(list(filter(lambda x:len(x)>5,['abcde','1234567','abcdefg','123'])))
    #执行结果为['1234567', 'abcdefg']
    a=['abcde','1234567','abcdefg','123']
    def f(x): 
        if len(x)<5:
            return True
        else :
            return False
    
    print('保留长度小于5的元素',list(filter(f,a)))
    #执行结果为:保留长度小于5的元素 ['123']

    3.reduce函数:reduce(func,可迭代对象[,初始值]):

    ①reduce函数使用之前需要先通过functools模块导入from functools import reduce

    ②func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

    ③处理逻辑:表示将传入的可迭代对象依次循环,将所有元素按照传入的func逻辑进行处理,最后得到一个值

    from functools import reduce
    print('原列表为[1,3,6,8],所有元素相加所得结果为',reduce(lambda x,y:x+y,[1,3,6,8]))
    #执行结果为:原列表为[1,3,6,8],所有元素相加所得结果为 18
    from functools  import reduce
    array=['123','abc','456def','g']
    def f(x,y):
        return x+y
    
    print('用haha拼接结果为',reduce(f,array,'haha'))  #指定初始值
    #执行结果为:用haha拼接结果为 haha123abc456defg---可看出字符串拼接时,指定的初始值放在最开头位置
  • 相关阅读:
    【基础】Oracle 表空间和数据文件
    oracle学习笔记1:windows下oracle数据库安装及.net调用oracle数据库
    redis中文网站
    .NET中的消息队列
    .Net下的进程间的通讯 -- Windows消息队列
    1060 最复杂的数(反素数玄学dfs)
    1282 时钟(最小表示法+hash)
    1191 消灭兔子(贪心+优先队列)
    1366 贫富差距(floyed)
    1503 猪和回文(DP)
  • 原文地址:https://www.cnblogs.com/Forever77/p/9766810.html
Copyright © 2011-2022 走看看