• python系列二filter()、map()和reduce()


    2、Python中filter()、map()和reduce()的区别
    2.1、概述:
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    2.1.1.语法:filter(function, iterable)
     该方法接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回
    True 或 False,最后将返回 True 的元素放到新列表中。

    2.1.2 案例:判断列表中奇数

    from functools import reduce
    
    def is_odd(i):
    return i%2==1
    
    newlist=filter(is_odd,[1,3,89,34,4,6,7])
    print(list(newlist))

    map() 会根据提供的函数对指定序列做映射
    2.2.1.语法:map(function, iterable, ...)
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    2.2.2. 案例: 提供了两个列表,对相同位置的列表数据进行相加

    result = map(lambda x,y:x+y,[1,2,43,4,5],[1,4,3,5])
    print(list(result))

     reduce() 函数会对参数序列中元素进行累积。
    2.3.1.语法:reduce(function, iterable[, initializer])
     函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参
     数)先对集合中的第 1、2 个元素 进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
    python3中将 reduce 放在functools模块中了
    2.3.2. 案例: 提供了两个列表,对相同位置的列表数据进行相加

    result=reduce(lambda x,y:x+y,[1,2,4,5])
    print(result)

     2.4、应用场景:
     面试题: 分别使用map,reduce,filter函数完成下面的任务
    1)、计算1-100的和

    result=reduce(lambda x,y:x+y,range(1,101))
    print(result)

    2)、1-10,求每个数字的平方

    list1=map(lambda x:x*x,range(1,11))
    print(list(list1))


    3)、 {“a”,”ab”,”abc”,”bc”,”cd”}输出含有C字符的元素,返回值是list

    list2=filter(lambda x: "c" in x,{"a","ab","abc","bc","cd"})
    print(list(list2))
  • 相关阅读:
    Integer值判断是否相等问题
    Java连接Redis
    oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了
    前端修炼(第三天)函数
    前端 JS 修炼(第一天)包装对象、作用域、创建对象
    linux oracle 启动全过程
    「android」webview中文乱码
    「dos」bat单条命令跨多行
    「股票」东方财富网公式-缩量
    「android」as javadoc乱码
  • 原文地址:https://www.cnblogs.com/sunshine2017/p/11734484.html
Copyright © 2020-2023  润新知