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}]

最新文章

  1. MyEclipse创建Maven工程
  2. Markdown生成左边框目录
  3. C#数组的声明方式
  4. C# WebBrowser NativeMethods
  5. IE 不兼容的几个js问题及解决方法
  6. SR4000笔记
  7. 零基础学习云计算及大数据DBA集群架构师【企业级运维技术及实践项目2015年1月29日周五】
  8. XJOI网上同步训练DAY1 T1
  9. spring.net的基本搭建
  10. Prism for WPF再探(基于Prism事件的模块间通信)
  11. 【bzoj 1143】[CTSC2008]祭祀river
  12. 使用Qt Creator进行linux远程调试
  13. vscode sync插件 在不同设备 同步的坑
  14. Intellij Idea反向生成Hibernate实体类
  15. Fire! 又是图 bfs
  16. CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案
  17. SpringMVC基于代码的配置方式(零配置,无web.xml)直接继承WebMvcConfigurerAdapter
  18. selenium3 下载、配置
  19. 个人总结——Beta版本
  20. VSCode 配置 C++

热门文章

  1. django5-书籍与出版社关联外键
  2. 网站的favicon图标
  3. 【2019年版】如何向SAP公司提交Message?
  4. 030.[转] sql事务特性
  5. 原生js利用data选择元素
  6. 记录C#-WPF打开/关闭>>事件执行顺序
  7. mysql操作数据表
  8. [Go] 并发imap收信
  9. [PHP] 安装PHP报错“Primary script unknown”的解决方法
  10. 【BZOJ1443】[JSOI2009]游戏Game(二分图+博弈)