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}]
Python【day 14】sorted函数、filter函数和map函数的区别的更多相关文章
- 2018.8.15 python 中的sorted()、filter()、map()函数
主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...
- 匿名函数lambda,过滤函数filter,映射类型map
匿名函数lambda, 作用是不用定义函数,用完之后会自动被删掉,在使用执行脚本的时候,使用lambda就可以省下定义函数的过程,简化代码的可读性. 格式是 例子g=lambda x,y:x+y g( ...
- python关于list的三个内置函数filter(), map(), reduce()
''' Python --version :Python 2.7.11 Quote : https://docs.python.org/2/tutorial/datastructures.html#m ...
- Python基础(reduce,filter,map函数)
map函数: map函数特点:对可迭代对象中的每个元素进行相同的操作(例如每个元素+1等等) #————————————————map函数———————————————————— #对列表的各个元素实 ...
- 十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数
一.map函数 1.自定义函数,实现类似于map函数的功能 num_l = [1,3,4,5,6,9] def power(n): return n ** 2 def map_test(func,ar ...
- python map函数、filter函数、reduce函数
1.map函数:map(func,可迭代对象): ①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义) ②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的fu ...
- 函数与函数式编程(生成器 && 列表解析 && map函数 && filter函数)-(四)
在学习python的过程中,无意中看到了函数式编程.在了解的过程中,明白了函数与函数式的区别,函数式编程的几种方式. 函数定义:函数是逻辑结构化和过程化的一种编程方法. 过程定义:过程就是简单特殊没有 ...
- 『无为则无心』Python函数 — 33、高阶函数
目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...
- Python23之内置函数filter()和map()
首先我们了解一个概念:迭代 迭代是访问集合元素的⼀种⽅式.迭代器是⼀个可以记住遍历的位置的对象.迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 我们已经知道 ...
- Python3下map函数的显示问题
map函数是Python里面比较重要的函数,设计灵感来自于函数式编程.Python官方文档中是这样解释map函数的: map(function, iterable, ...) Return an it ...
随机推荐
- IDEA创建maven web工程
一.新建一个maven web工程 step1 File --> New --> Project step2 按下图步骤操作 step3 填写项目信息 step4 选择本地的maven安装 ...
- js监听屏幕方向如何第一次默认不监听
this.supportOrientation = typeof window.orientation === 'number'; // 检查屏幕方向 checkScreenOrientation() ...
- Kali linux-信息收集-dmitry
信息收集-dmitry DMitry(Deepmagic Information Gathering Tools 深度信息收集工具)是一个kali linux下用C语言写的工具.主要功能为端口扫描,w ...
- 需求规格说明书(final)
1. 引言 1.1 编写目的 该文档是关于微信小程序自习吧的功能和性能描述,重点描述了小程序的功能需求,并作为小程序开发设计阶段的主要输入. 本文档的预期读者包括:triple兔成员,软件工程老师,用 ...
- linux远程Windows服务器
Rdesktop -f ip 端口 Ctrl+alt+enter退出全屏
- pyse基本操作命令一
#coding=utf-8import timefrom selenium import webdriver dr = webdriver.Chrome()# dr = webdriver.Ie()d ...
- Monkey小白入门篇
一.monkey简介 中文名:猴子 职业:压力测试小工具 用途:对待测Android应用程序进行压力测试,测试app是否会crash Android官方描述: The Monkey is a prog ...
- SecureCRT自动断开连接的解决方法
方法一: 在普通用户下,输入重启sshd服务的命令:service sshd restart 这时会提示:管理系统服务或单元需要身份验证.解决的方法:先要切换为root用户,接着重启sshd服务:se ...
- CF786B Legacy 线段树优化建图
问题描述 CF786B LG-CF786B 题解 线段树优化建图 线段树的一个区间结点代表 \([l,r]\) 区间点. 然后建立区间点的时候就在线段树上建边,有效减少点的个数,从而提高时空效率. 优 ...
- Python 对象比较(is & ==)
Python 对象有 3 要素 id type value id 对象在内存中的地址 可以通过 id() 获取 比较 只有同一个对象 id 才会相同 id 通过 is 比较 示例: a = list( ...