zoukankan      html  css  js  c++  java
  • Python23之内置函数filter()和map()

    首先我们了解一个概念:迭代

      迭代是访问集合元素的⼀种⽅式。迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

    我们已经知道可以对listtuplestr等类型的数据使for...in...的循环语法从其中依次拿到数据进⾏使⽤,我们把这样的过程称为遍历,也叫迭代。

    一、filter()函数

      filter()函数实现过滤功能,它有两个参数,第一个参数为None时或一个函数对象,第二个参数为一个可迭代对象

      当第一个参数为None时,实现将可迭代对象的每一个元素值为False的过滤掉,生成一个仅包含元素值为True的新可迭代对象

    1 list1 = ['詹姆斯','字母哥',0,False,'废青123']
    2 lsit2 = filter(None,list1)
    3 
    4 lsit2
    5 <filter object at 0x04002470>
    6 list(lsit2)
    7 ['詹姆斯', '字母哥', '废青123']
    View Code

      当第一个参数为一个函数对象时,那么此时作为参数的函数会调用第二个可迭代对象里面的每一个元素作为实参,并按返回值对迭代对象的元素进行过滤,返回值为False的被过滤掉,剩下的可迭代对象的元素组成一个新的可迭代对象并返回

    1 list(range(10))
    2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    3 list(filter(lambda x:x%2, range(10)))
    4 [1, 3, 5, 7, 9]
    View Code

    二、map()函数

      map()函数与filter()函数形式一致,实现对可迭代对象的映射,但其第一个参数必须是一个函数对象,而且map()函数是将经过函数对象处理后的返回值作为新的元素组成一个可迭代对象

    1 list(range(10))
    2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    3 list(map(lambda x:x%2, range(10)))
    4 [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
    View Code
  • 相关阅读:
    websocket+nodejs+redis实现消息订阅和发布系统
    nodejs下载图片到本地,根据百度图片查找相应的图片,通过nodejs保存到本地文件夹
    基于vue 2.X和高德地图的vue-amap组件获取经纬度
    获取Class对象的三种方式
    java中的回调机制的理解(小例子)
    URL和URI的区别
    java web开发中各类地址的写法
    ListView性能
    Android中的Handler, Looper, MessageQueue和Thread对应关系
    java几种常用的算法
  • 原文地址:https://www.cnblogs.com/ksht-wdyx/p/11341195.html
Copyright © 2011-2022 走看看