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()

  • 相关阅读:
    定点数的表示
    [收集]XMPP使用tls 和sasl登录
    socket函数
    [收集] SendMessage、PostMessage原理
    DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
    关于在IWebBrowser中无法响应Ctrl+C等快捷键的解决方法
    Enum 操作
    程序员面对分歧和难题应当具备的态度【转】
    NDIS学习笔记一
    NDIS学习笔记二——(模拟丢包)
  • 原文地址:https://www.cnblogs.com/codescrew/p/8678421.html
Copyright © 2011-2022 走看看