列表生成式+过滤器(filter)+映射(map)+lambda总结
这些都是python的特色,不仅强大,而且好用,配合起来使用更是无敌。
零、lambda
lambda用于产生一个匿名表达式,组成部分为:lambda + ‘函数表达式’ ‘函数表达式’由一个冒号加上两个‘操作数’组成,如:
lambda x:x*3
冒号左边的操作数,作为函数的参数;冒号右边的作为函数的放回值!
那么lambda x:x*3就等价于:
def xxx(x):
return x*3
一、列表生成式
列表生成器,可以由3个部分组成,这3个从左到右的顺序是:
1、表达式部分:一般为一个表达式作用一个列表的元素;或者就该元素,不作用任何表达式 、
2、列表生成部分:一般为一个for循环产生初始列表,并依次导出元素
3、过滤部分:一般由一个if判断构成,条件为假的过滤掉。这个部分可选。
总结一下列表生成器就是:
[表达式部分 列表生成部分 过滤部分(可选)]#注意三个部分之间空格隔开即可
例子:
[ str(i) for i in range(1, 100) if not(i%3)]
这个理解顺序过程是:
首先由列表生成部分:for i in range(1, 100)逐一产生列表的元素,
每个 元素经过过滤部分:if not(i%3)检测,判断为假的直接丢弃,
判断为真的再交给表达式部分:str(i) 进行处理得到新列表的元素。
这个流程直到for结束循环,新列表生成。
二、过滤器(filter)
过滤器有两个参数:function类型,序列
1、序列是将被筛选的原始集合,function类型是制定筛选的规则(公式)。
2、function类型如果返回None,或者说就是None,则序列中为值为假的将被过滤,如:
filter(None,(0,0,False,11,True,1,123)),就会过滤剩下[11, True, 1, 123]
注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
>>> list(filter(None,(0,0,False,11,True,1,123)))
[11, True, 1, 123]
3、当function类型是一个函数时,filter会将序列中每个元素带入函数,函数返回 假的元素被剔除,
如:
>>> list(filter(lambda x:not x%2,[x for x in range(10)]))
[0, 2, 4, 6, 8]
4、如果筛选的规则不复杂的话,列表生成式完全可以代替他:
[x for x in range(10) if(not x%2)]
三、映射(map)
1、和filter类似,不过这次不是过滤,而是映射:把一个序列映射成另一个序列,映射规则由一个函数制定。 2、同样map也有两个参数:function类型,序列,如:
map(lambda x:x**2,range(10)),这样序列[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]就被映射成了
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
注意到map()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
>>> list(map(lambda x:x**2,range(10)))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
4、如果筛选的规则不复杂的话,列表生成式完全可以代替他:
[x**2 for x in range(10)]
总结:
1、filter和lambda结合,可以方便的筛选一个序列。
2、map和lambda结合,可以方便的映射出新的序列。
3、如果筛选/映射规则比较简单,可以直接用列表生成式代替,更加方便。
4、他们其实都可以各自结合,产生巨大爆发力。
列表生成式+过滤器(filter)+映射(map)+lambda总结的更多相关文章
- python列表推导同filter和map的比较
首先介绍下filter和map: filter: filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元 ...
- 2-2 列表推导同 filter 和 map 的比较
列表推导同 filter 和 map 的比较 参考廖雪峰的文档: filter()函数:用于过滤序列. filter()接收一个函数和一个序列.把传入的函数依次作用于传入的序列的每个元素,根据返回值是 ...
- lambda匿名函数,sorted排序,filter()筛选,map()映射
一丶匿名函数 语法: 函数名 = lambda参数:返回值 # 普通的正常的函数 def func(n): return n * n ret = func(9) print(ret) # 匿名函数 a ...
- Python filter,map,lambda,reduce,列表解析
filter用法 filter(func,seq) 将seq的元素逐一代入func,通过func的返回值来判断是保留还是过滤 >>> def foo(x): return x> ...
- 匿名函数lambda,过滤函数filter,映射类型map
匿名函数lambda, 作用是不用定义函数,用完之后会自动被删掉,在使用执行脚本的时候,使用lambda就可以省下定义函数的过程,简化代码的可读性. 格式是 例子g=lambda x,y:x+y g( ...
- lambda表达式,filter,map,reduce,curry,打包与解包和
当然是函数式那一套黑魔法啦,且听我细细道来. lambda表达式 也就是匿名函数. 用法:lambda 参数列表 : 返回值 例: +1函数 f=lambda x:x+1 max函数(条件语句的写法如 ...
- python语法学习第五天--lambda表达式、filter()、map()
lambda表达式 python使用lamda表达式来创建匿名函数 lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数 语法: lambda [arg1 [,arg ...
- Python3中高阶函数lambda,filter,map,reduce,zip的详细用法
在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...
- python内置函数lambda、filter、map、reduce
lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...
随机推荐
- 【Redis】Redis学习(四) Redis Sentinel模式详解
主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生. Redis Sentinel是Redis官方提供的集群管理工具,主要有三大 ...
- Hive Serde - CSV、TSV
CSV hive-0.14.0内置支持CSV Serde,以前的版本需要引入第三方库的jar包(http://https://github.com/ogrodnek/csv-serde) 现在有个文本 ...
- LeetCode题解之Convert BST to Greater Tree
1.题目描述 2.问题分析 使用一个vector将所有节点的值以升序排列.然后比较,求和,加上. 3.代码 TreeNode* convertBST(TreeNode* root) { if (roo ...
- MS SQL backup database的俩个参数
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 数据传输选项 BUFFERCOUNT = { buffercount | @bufferco ...
- 如何扩展 Azure 资源组中虚拟机的 OS 驱动器
概述 在资源组中通过从 Azure 应用商店部署映像来创建新的虚拟机 (VM) 时,默认的 OS 驱动器空间为 127 GB. 尽管可以将数据磁盘添加到 VM(数量取决于所选择的 SKU),并且我们建 ...
- 如何在 Azure 中标记 Windows 虚拟机
本文介绍在 Azure 中通过 Azure 资源管理器标记 Windows 虚拟机的不同方式.标记是用户定义的键/值对,可直接放置在资源或资源组中.针对每个资源和资源组,Azure 当前支持最多 15 ...
- Gmail 设置,时区
问题提出: 我们工作的时候,需要和不同时区的人进行合作.我们需要注意时区问题.如果没有设置好时区,会造成很多不便. 了解时区问题: 通过 这个网站可以,让你对时区有所了解:http://zh.thet ...
- python基础学习13----生成器&迭代器
生成器是属于迭代器,但迭代器不只是生成器 首先是一个简单的生成器 def gener(): print(1) yield 1 print(2) yield 2 print(3) yield 3 g=g ...
- VPC见解
VPC是什么? VPC:Virtual Private Cloud,即虚拟私有云.讨论VPC时,我们可以从两个方面来讨论: 从服务的角度来看:VPC是一种云,但是这个云不属于我们常见的公有云.私有 ...
- 极限编程核心价值:尊重(Respect)
原文:https://deviq.com/respect 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Feedback ...