Python filter,map,lambda,reduce,列表解析
filter用法 filter(func,seq)
将seq的元素逐一代入func,通过func的返回值来判断是保留还是过滤
>>> def foo(x):
return x>3 >>> filter(foo,range(6))
[4, 5]
>>> filter(lambda x:x>3,range(6))
[4, 5]
#注意只需要写函数名,不带参数
map用法map(func/lambda,seq)
通过函数对队列中的每个元素进行操作,元素替换成返回值,注意是生成一个新的序列,原来的序列不会变化
>>> map(lambda x:x*2,range(6))
[0, 2, 4, 6, 8, 10]
#同样的,这里要么是lambda表达式,要不就是是个函数名
>>> a
[1, 2, 3, 4, 5, 6]
>>> map(foo,a)
[False, False, False, True, True, True]
>>> a
[1, 2, 3, 4, 5, 6]
#foo是判断x是否大于三,是返回True,否返回false
对多个序列的操作
>>> map(lambda x,y:x+y,range(4),range(5))
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
map(lambda x,y:x+y,range(4),range(5))
File "<pyshell#84>", line 1, in <lambda>
map(lambda x,y:x+y,range(4),range(5))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
>>> map(lambda x,y:x+y,range(4),range(4))
[0, 2, 4, 6]
列表解析
[表达式/函数,for循环]
>>> [x**2 for x in range(6)]
[0, 1, 4, 9, 16, 25]
>>> [a**2 for x in range(6)]
[1, 1, 1, 1, 1, 1]
>>> #可见当你写一个for循环中无关的变量时,它仅仅重复表达式的结果
>>> [foo(x) for x in range(6)]
[False, False, False, False, True, True]
#这里的函数要带括号,foo同上
>>> [lambda x:x**2 for x in range(6)]
[<function <lambda> at 0x01DE8870>, <function <lambda> at 0x01DE8830>, <function <lambda> at 0x01DE88F0>, <function <lambda> at 0x01DE8930>, <function <lambda> at 0x01DE8970>, <function <lambda> at 0x01DE89B0>]
>>> [(lambda x:x**2)(x) for x in range(6)]
[0, 1, 4, 9, 16, 25]
#同样你需要把lambda看作是函数名,或者返回值
>>> [x**2 for x in range(6) if x**2>9]
[16, 25]
>>> [(x**2,y**3) for x in range(4) for y in range(3) if x>0 and y>0]
[(1, 1), (1, 8), (4, 1), (4, 8), (9, 1), (9, 8)]
>>> #将后面的for看成嵌套的,还有前面的表达式记得加括号
reduce 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用
>>> reduce(lambda x,y:x+y,range(1,101))
5050
>>> #reduce一定是接受一个二元函数,比如上面就是 (((1+2)+3)+4)+...
>>> reduce(lambda x,y:x+y,range(1,101),100)
5150
#接受的初始值
Python filter,map,lambda,reduce,列表解析的更多相关文章
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- 【转】Python 中map、reduce、filter函数
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- (Python)list的内建函数 filter(), map(), 和 reduce()
这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce(). 1.filter(function, sequence) 逐个从sequence中取一个 ...
- 转:Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- Python里的map、reduce、filter、lambda、列表推导式
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- python中reduce filter map lambda函数
lambda函数 python 使用 lambda 来创建匿名函数,lambda返回值是一个函数的地址,也就是函数对象. 语法:lambda [arg1 [,arg2,.....argn]]:expr ...
- python filter map reduce
filter(function, iterable): Construct a list from those elements of iterable for which function retu ...
随机推荐
- HDU 1402 fft 模板题
题目就是求一个大数的乘法 这里数字的位数有50000的长度,按平时的乘法方式计算,每一位相乘是要n^2的复杂度的,这肯定不行 我们可以将每一位分解后作为系数,如153 = 1*x^2 + 5*x^1 ...
- 分享原创powershell脚本小工具ctracert.ps1
----------[脚本介绍]----------- 脚本名称:ctracert.ps1软件名称:灰主牛 跟踪路由 归属地版 V1.0脚本作用:1跟踪路由.2显示归属地.(注意不带显示时间功能)脚本 ...
- Xcode5 取消ARC
终于开心的装上Xcode5,主管马上发布新的任务,开始新的项目,各种开心,终于可以换个界面看看了. 可是谁知第一步创建项目就开始悲剧了,居然没有地方可以选择非ARC了,真是肿么个情况呀,查了一下,万能 ...
- Android M新特性之APP Link
The Android M Developer Preview introduces support for App Links, which improves upon existing link ...
- iOS求职之OC面试题
1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #im ...
- Android常见控件— — —EditText
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- Joomla 文件操作常用方法
今天介绍下joomla下文件操作常用方法,这些方法在文件读写,图片文件上传,等都有用处. jimport('joomla.filesystem.file'); $j = new JFile(); ge ...
- struts2 标签 和 c标签的页面数据显示
用struts2 标签显示的页面代码 <s:if test="#request.employees == null || #request.employees.size() == 0& ...
- [Python模式]策略模式
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换.此模式让算法的变化独立于使用算法的客户. 作为动态语言,Python实现策略模式非常容易,只要所有算法提供相同的函数即可. import ...
- idea中如何配置tomcat
这几天想通过JDBC驱动使用MySQL数据库,但老是运行不成功,但是写成java就没有问题,于是想到是不是服务器没配置好 idea中配置tomcat的步骤如下 1:File->Settings. ...