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 ...
随机推荐
- [转]English - 开口说话工具箱: 27个高频词单词
本文转自:https://blog.csdn.net/weixin_34247032/article/details/87125465 英语初学者注意力不要放在语法上, 首先要懂得如何让自己开口说英语 ...
- 1_Swift概况
Swift 标准库 解决复杂的问题并编写高性能,可读的代码 概况 Swift标准库定义了用于编写Swift程序的基本功能,其中包括 1.如基本数据类型Int,Double以及String 2.共同的数 ...
- Mysql添加用户与授权
1.本地环境 CentOS Linux release 7.5.1804 (Core) mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using ...
- 1. Linux基本命令
1. Linux 基本操作 1 基本命令 序号 命令 对应英文 作用 1 ls list 查看当前文件夹下的内容 2 pwd print work directory 查看当前所在文件夹 3 Cd [ ...
- python+requests+re匹配抓取猫眼上映电影信息
python+requests抓取猫眼中上映电影,re正则匹配获取对应电影的排名,图片地址,片名,主演及上映时间和评分 import requests import re, json def get_ ...
- python的gRPC示例
参考URL: https://segmentfault.com/a/1190000015220713?utm_source=channel-hottest gRPC 是一个高性能.开源和通用的 RPC ...
- 有用的link
资料 了解oi 刘汝佳代码仓库(紫书 c++参考手册 2018年洛谷日报索引 2019年洛谷日报索引 (其他oj: luogu 虚拟判官(名校oj都有 离线bzoj题库 (有时候进不去请点:rxz大爷 ...
- Html学习之十二(CSS选择器的应用二)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 微信小程序picker重写,精确到时分秒
https://developers.weixin.qq.com/miniprogram/dev/component/picker.html 微信小程序提供的picker组件,只精确到分,项目中需要秒 ...
- Java基本数据类型转换一
public class TestConvert { /**容量小的类型自动转化为容量大的类型数据类型按容量大小排列 * byte,short,char -> int ->long-> ...