这些都是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. 安卓基础之Activity的四种启动模式

    Activity的四种启动模式   Activity的启动模式在清单文件中配置: <activity ... activity:lauchMode:"..."; //有四种模 ...

  2. maven 学习笔记--简介

    1.什么是maven Maven是一个服务于基于java平台的项目构建.依赖管理和项目信息管理. 2:什么是构建,maven是个优秀构建工具? (1)构建(bulid):对代码的进行编译.运行单元测试 ...

  3. android:screenOrientation属性

    今天工作中发现一个activity的android:screenOrientation属性设置为behind,平时经常看到的是landscape.portrait,一时没有反应过来,故查了一下andr ...

  4. Mysql binlog 无法删除(purge命令无法删除)

    1.版本 1)操作系统 cat /etc/issueCentOS release 6.6 (Final)Kernel \r on an \m cat /proc/versionLinux versio ...

  5. 小慢歌之基于RHEL8/CentOS8的网络IP配置详解

    ➡ 在rhel8(含centos8)上,没有传统的network.service,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,那么该如何进行网络配置呢. ➡ ...

  6. Markdown 进阶

    目录 markdown进阶语法 内容目录 加强代码块 脚注 流程图 时序图 LaTeX公式 markdown进阶语法 内容目录 使用 [TOC] 引用目录,将 [TOC] 放至文本的首行,编辑器将自动 ...

  7. Django商城项目笔记No.2项目准备工作

    Django商城项目笔记No.2项目准备工作 接着上篇开始,创建好工程之后,随之而来的是怎么配置工程,这篇文章记录如何进行相关的配置 1.pycharm打开工程,进行相关的配置 通过pycharm打开 ...

  8. 作为一名GIS从业人员,这些网站你应该关注

    前言:今年工作的第二年,端午节后,入职新公司.总算是回归本行,从事GIS相关工作.这个系列算是对在公司工作和学习成长的记录吧. 数据篇:       作为遥感的商业应用,首先考虑的是遥感数据的产品化. ...

  9. PyQt5--CloseWindow

    # -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  10. 有关于分布式缓存Hazelcast

    如果在内网段中部署或者启动缓存服务.不能存在相同的组名称.如同使用dubbo一样,会导致无法连接到缓存节点