这些都是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. Oracle EBS OPM 生产批创建事务处理

    --生产批创建事物处理 --created by jenrry DECLARE p_mmti_rec mtl_transactions_interface%ROWTYPE; p_mmli_tbl gm ...

  2. python之绘制图形库turtle

    关于绘制图形库turtle# 画布上,默认有一个坐标原点为画布中心的坐标轴(0,0),默认"standard"模式坐标原点上有一只面朝x轴正方向小乌龟 一:海龟箭头Turtle相关 ...

  3. 【MySQL运维实践】

    什么是日志 日志(log)是一种顺序记录事件流水的文件 记录计算机程序运行过程中发生了什么 多种多样的用途  帮助分析程序问题 分析服务请求的特征.流量等 判断工作是否成功执行 等等…… MySQL日 ...

  4. java中的String类的不可变性的小例子

    在java语言中,String类具有不可变性,即常量字符串不可更改.下面的一个小例子简单演示相关概念. public class test { public static void main(Stri ...

  5. Redis雪崩、穿透、热点key等优化

    一.缓存 Redis做缓存是最常见的应用场景.客户端请求在缓存层命中就直接返回,如果miss就去读取存储层,存储层读取到就写入缓存层,然后再返回到客户端. 优点: 加速读写 降低后端负载 缺点: 数据 ...

  6. SAP业务蓝图设计的一些想法

    SAP蓝图设计是面向业务流程的,目前国内很多软件公司在做蓝图设计(概要设计)都是面向功能的,而对于用户来说,需要的不是一个个功能点,而是要实现具体的业务.功能点是一个点,而业务流程是一条线.是在梳理业 ...

  7. 题解 P2920 【[USACO08NOV]时间管理Time Management】

    题面 作为一名忙碌的商人,约翰知道必须高效地安排他的时间.他有N工作要 做,比如给奶牛挤奶,清洗牛棚,修理栅栏之类的. 为了高效,列出了所有工作的清单.第i分工作需要T_i单位的时间来完成,而 且必须 ...

  8. Alpha- 事后诸葛亮(麻瓜制造者)

    目录 预期计划 现实进展 团队体会 成员分工及工作量比例 会议总结 预期计划 在Alpha阶段开始之前,我们的预期计划是:从用户登录,发布商品.发布求购信息的基本功能开始做起.用户登录使用输入教务处的 ...

  9. angularjs ngRoute和ui.router对比

    ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...

  10. openlayers5实战--踩坑总结

    1.接口返回圆心坐标和半径,直接通过new Circle(center,radius)添加圆形feature变小问题. 解决办法: new  Feature()的geometry参数不能直接赋值new ...