zoukankan      html  css  js  c++  java
  • map函数、filer函数、reduce函数的用法和区别

    Map函数


     

    map函数的用法如下:

    def add_one(x):
        return x+1
    
    #使用普通函数
    v1 = map(add_one,[1,2,3])
    v1 = list(v1)
    print(v1)   #打印结果为[2, 3, 4]
      
    #使用匿名函数,代码更为简洁  
    v2 = map(lambda x:x+1,[1,2,3])
    v2 = list(v2)
    print(v2)   #打印结果为[2, 3, 4]

    从代码可以看出,map()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素放入函数中执行,然后把函数执行的返回值联合一起组成一个新的可迭代对象

    filter函数


    filter函数的用法如下:

    def judge_sb(x):
        return x.startswith("sb")
    
    #使用普通函数
    v1 = filter(judge_sb,sb_list)
    v1 = list(v1)
    print(v1)  #打印结果为['sb_001', 'sb_002']
    
    #使用匿名函数,代码更为简洁
    v2 = filter(lambda x:x.startswith("sb"),sb_list)
    v2 =list(v2)
    print(v2)   #打印结果为['sb_001', 'sb_002']

    从代码可以看出,filter()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素放入函数中执行,然后把函数执行的返回值为真,就把那个传参保留,如果为假就舍弃,最终将传参联合一起组成一个新的可迭代对象

    reduce函数


    reduce函数的用法如下:

    from functools import reduce   #要导入模块
    def add(x,y):
         return x+y
    
    #使用普通函数
    v1 = reduce(add,[1,2,5,7])
    print(v1)   #打印结果为15
    
    #使用匿名函数,代码更为简洁
    v2 = reduce(lambda x,y:x+y,[1,2,5,7])
    print(v2)   #打印结果为15

    从代码可以看出,filter()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素进行类似累加、累乘这种压缩的操作,最后返回一个值

    总结


    #处理序列中的每个元素,得到的结果是一个可迭代对象,其元素个数及位置与原来一样

    map()

    #遍历序列中的每个元素,判断每个元素得到布尔值,如果True则留下来

    filter()

    #处理一个序列,然后把序列进行合并操作

    reduce()

  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/codescrew/p/8678421.html
Copyright © 2011-2022 走看看