这些都是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总结的更多相关文章

  1. python列表推导同filter和map的比较

    首先介绍下filter和map: filter: filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元 ...

  2. 2-2 列表推导同 filter 和 map 的比较

    列表推导同 filter 和 map 的比较 参考廖雪峰的文档: filter()函数:用于过滤序列. filter()接收一个函数和一个序列.把传入的函数依次作用于传入的序列的每个元素,根据返回值是 ...

  3. lambda匿名函数,sorted排序,filter()筛选,map()映射

    一丶匿名函数 语法: 函数名 = lambda参数:返回值 # 普通的正常的函数 def func(n): return n * n ret = func(9) print(ret) # 匿名函数 a ...

  4. Python filter,map,lambda,reduce,列表解析

    filter用法 filter(func,seq) 将seq的元素逐一代入func,通过func的返回值来判断是保留还是过滤 >>> def foo(x): return x> ...

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

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

  6. lambda表达式,filter,map,reduce,curry,打包与解包和

    当然是函数式那一套黑魔法啦,且听我细细道来. lambda表达式 也就是匿名函数. 用法:lambda 参数列表 : 返回值 例: +1函数 f=lambda x:x+1 max函数(条件语句的写法如 ...

  7. python语法学习第五天--lambda表达式、filter()、map()

    lambda表达式 python使用lamda表达式来创建匿名函数 lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数 语法: lambda [arg1 [,arg ...

  8. Python3中高阶函数lambda,filter,map,reduce,zip的详细用法

    在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...

  9. python内置函数lambda、filter、map、reduce

    lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...

随机推荐

  1. 【Redis】Redis学习(四) Redis Sentinel模式详解

    主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生. Redis Sentinel是Redis官方提供的集群管理工具,主要有三大 ...

  2. Hive Serde - CSV、TSV

    CSV hive-0.14.0内置支持CSV Serde,以前的版本需要引入第三方库的jar包(http://https://github.com/ogrodnek/csv-serde) 现在有个文本 ...

  3. LeetCode题解之Convert BST to Greater Tree

    1.题目描述 2.问题分析 使用一个vector将所有节点的值以升序排列.然后比较,求和,加上. 3.代码 TreeNode* convertBST(TreeNode* root) { if (roo ...

  4. MS SQL backup database的俩个参数

    http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 数据传输选项 BUFFERCOUNT = { buffercount | @bufferco ...

  5. 如何扩展 Azure 资源组中虚拟机的 OS 驱动器

    概述 在资源组中通过从 Azure 应用商店部署映像来创建新的虚拟机 (VM) 时,默认的 OS 驱动器空间为 127 GB. 尽管可以将数据磁盘添加到 VM(数量取决于所选择的 SKU),并且我们建 ...

  6. 如何在 Azure 中标记 Windows 虚拟机

    本文介绍在 Azure 中通过 Azure 资源管理器标记 Windows 虚拟机的不同方式.标记是用户定义的键/值对,可直接放置在资源或资源组中.针对每个资源和资源组,Azure 当前支持最多 15 ...

  7. Gmail 设置,时区

    问题提出: 我们工作的时候,需要和不同时区的人进行合作.我们需要注意时区问题.如果没有设置好时区,会造成很多不便. 了解时区问题: 通过 这个网站可以,让你对时区有所了解:http://zh.thet ...

  8. python基础学习13----生成器&迭代器

    生成器是属于迭代器,但迭代器不只是生成器 首先是一个简单的生成器 def gener(): print(1) yield 1 print(2) yield 2 print(3) yield 3 g=g ...

  9. VPC见解

    VPC是什么? VPC:Virtual  Private  Cloud,即虚拟私有云.讨论VPC时,我们可以从两个方面来讨论: 从服务的角度来看:VPC是一种云,但是这个云不属于我们常见的公有云.私有 ...

  10. 极限编程核心价值:尊重(Respect)

    原文:https://deviq.com/respect 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Feedback ...