zoukankan      html  css  js  c++  java
  • Python【day 14】sorted函数、filter函数和map函数的区别

    sorted函数、filter函数和map函数的区别
    1、作用
    前者用于排序,
    中者用于筛选,
    后者用于返回值(不是特定的筛选或者排序)
    2、写法
    前者 sorted(iterable,key=自定义函数名字或者匿名函数,reverse=False)
    返回的是iterable
    中者 filter(func(自定义函数名字或者匿名函数),iterable)
    返回的是iterator(迭代器) 通过list(迭代器)转换成列表(iterable)
    前者 map(func(自定义函数名字或者匿名函数),iterable)
    返回的是iterator(迭代器) 通过list(迭代器)转换成列表(iterable)
    3、运行原理--概念
    前者 将iterable中的每一个元素,作为参数依次传递到key后面的自定义函数中(或者匿名函数中)
    依据函数的返回值,作为排序的依据
    中者 将iterable中的每一个元素,作为参数依次传递到参数1-自定义函数中,
    将函数的返回值保留 (自定义函数完成对参数的条件判断-筛选)
    后者 将iterable中的每一个元素,作为参数依次传递到参数1-自定义函数中,
    将函数的返回值保留 (自定义函数完成对参数的计算--并非特定的条件判断或者排序)
    4、应用
    对下面的学生信息进行筛选和修改信息
    li1 =[{'name':'jack','age':29},{'name':'tom','age':19}]
    sorted() 函数可以依据年龄进行升序排列
    filter() 函数可以把年龄大于20的学生筛选出来
    map()函数可以把年龄都加1岁
    5、适用场景
    1、map()函数适合比较复杂的操作,此时,参数1是自定义函数,而不是匿名函数
    将参数2-iterable中的每个元素,依次传递到自动化函数中进行操作
    2、列表推导式适合比较简单的操作,一行搞定
    3、匿名函数也适合比较简单的操作
    6、例子
    #练习 将下面学生信息,先按照年龄筛选出大于20岁的,然后按照年龄升序排列,最后把年龄都加一岁
    li2 =[{'name':'jack','age':29},{'name':'tom','age':19},{'name':'bob','age':23}]

    #1筛选 大于20
    f1 =filter(lambda dic:dic['age']>20,li2)
    li3 =list(f1)
    print(li3) #[{'name': 'jack', 'age': 29}, {'name': 'bob', 'age': 23}]

    #2排序
    li4 = sorted(li3,key=lambda dic:dic['age'],reverse=False)
    print(li4) #[{'name': 'bob', 'age': 23}, {'name': 'jack', 'age': 29}]

    #3批量修改
    def func(dic1):
    dic1['age'] +=1
    return dic1 #返回字典本身

    # m1 =map(lambda dic:dic['age']+1,li4) #[24, 30]
    #这里因为dic1字典本身修改了(年龄都加1岁,批量修改),这里不适合用匿名函数,适合用自定义函数 #注意点
    m1 =map(func,li4)
    li5 = list(m1)
    print(li5) #[{'name': 'bob', 'age': 24}, {'name': 'jack', 'age': 30}]


  • 相关阅读:
    [读书笔记]SQLSERVER企业级平台管理实践读书笔记02
    [工作相关] 一个虚拟机上面的SAP4HANA的简单使用维护
    vCenter机器查找功能不可用的解决
    [日常工作]GS使用安装盘修改密码后的处理
    [读书笔记]SQLSERVER企业级平台管理实践读书笔记01
    [书摘]架构真经--可扩展性规则的利益与优先级排行榜
    2017年总结2018年规划
    Windows 通过命令行设置固定ip地址
    ACDsee的安装过程
    [工作相关] GS产品使用LInux下Oracle数据库以及ASM存储时的数据文件路径写法.
  • 原文地址:https://www.cnblogs.com/wangtp/p/11782576.html
Copyright © 2011-2022 走看看