zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    WPF 命令基础
    委托 C#
    Volley网络请求框架的基本用法
    MailOtto 实现完美预加载以及源码解读
    Android_时间服务
    Android_Chronometer计时器
    Android_Json实例
    完结篇
    就快完结篇
    MySQL 选出日期时间最大的一条记录
  • 原文地址:https://www.cnblogs.com/sunshine2017/p/11734484.html
Copyright © 2011-2022 走看看