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函数的区别的更多相关文章

  1. 2018.8.15 python 中的sorted()、filter()、map()函数

    主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...

  2. 匿名函数lambda,过滤函数filter,映射类型map

    匿名函数lambda, 作用是不用定义函数,用完之后会自动被删掉,在使用执行脚本的时候,使用lambda就可以省下定义函数的过程,简化代码的可读性. 格式是 例子g=lambda x,y:x+y g( ...

  3. python关于list的三个内置函数filter(), map(), reduce()

    ''' Python --version :Python 2.7.11 Quote : https://docs.python.org/2/tutorial/datastructures.html#m ...

  4. Python基础(reduce,filter,map函数)

    map函数: map函数特点:对可迭代对象中的每个元素进行相同的操作(例如每个元素+1等等) #————————————————map函数———————————————————— #对列表的各个元素实 ...

  5. 十一、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 ...

  6. python map函数、filter函数、reduce函数

    1.map函数:map(func,可迭代对象): ①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义) ②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的fu ...

  7. 函数与函数式编程(生成器 && 列表解析 && map函数 && filter函数)-(四)

    在学习python的过程中,无意中看到了函数式编程.在了解的过程中,明白了函数与函数式的区别,函数式编程的几种方式. 函数定义:函数是逻辑结构化和过程化的一种编程方法. 过程定义:过程就是简单特殊没有 ...

  8. 『无为则无心』Python函数 — 33、高阶函数

    目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...

  9. Python23之内置函数filter()和map()

    首先我们了解一个概念:迭代 迭代是访问集合元素的⼀种⽅式.迭代器是⼀个可以记住遍历的位置的对象.迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 我们已经知道 ...

  10. Python3下map函数的显示问题

    map函数是Python里面比较重要的函数,设计灵感来自于函数式编程.Python官方文档中是这样解释map函数的: map(function, iterable, ...) Return an it ...

随机推荐

  1. webpack管理资源(loader操作)

    1.加载css npm install --save-dev style-loader css-loader webpack.config.js文件中: const path = require('p ...

  2. Linux命令大全|linux常用命令

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  3. NSURLSession的知识小记

    1.NSURLSession的使用流程 使用NSRULSession对象创建Task, 然后执行Task 2.获取NSURLSession ()获得共享的Session + (NSURLSession ...

  4. Hive SQL编译过程(转)

    转自:https://www.cnblogs.com/zhzhang/p/5691997.html Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive ...

  5. lvm - Logical Volume Manager - 逻辑卷管理

    下午突然感觉 lvm 相关的知识忘记了,恰好机房里的fedora服务器上 挂了4个500GB的HDD 硬盘没有使用,就拿来操作了一番: 下面有几篇关于lvm不错的文章,进行了链接,网上也有很多不错的博 ...

  6. 【西北师大-2108Java】第三次作业成绩汇总

    [西北师大-2108Java]第三次作业成绩汇总 熟悉PTA平台线上测试环境: 理解用户自定义类的定义: 掌握对象的声明: 学会使用构造函数初始化对象: 使用类属性与方法的使用掌握使用: 掌握pack ...

  7. java(android)命名规范

    在讲解命名规范前,先初略介绍下当前主要的标识符命名法和英文缩写规则. 标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. ...

  8. 基于C++的STL的vector实现静态链表,要求包含插入,删除,和查找功能

    //main.cpp部分 #include"List.cpp" int main() { StaticList<int> SL; SL.Insert(,); SL.In ...

  9. opencv读取USB相机select timeout问题

    现象: 树莓派4b或3b+   插着两个USB免驱相机 摄像头朝着灯就会报 time out 摄像头不朝着灯就不报 问题: 功率不够 朝着灯可能触发了USB相机的曝光补偿导致功率变大 解决: 使用带额 ...

  10. C#中List<T>转DataTable

      通过查询出来的类的集合的属性集合生成数据行,并通过属性获取每一个实体的指定属性的指定值