(Python)list的内建函数 filter(), map(), 和 reduce()
这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce().
1.filter(function, sequence) 逐个从sequence中取一个元素,传入function,返回一个使function为真的序列。 如果参数sequence是str、unicode或者tuple,则返回相同的类型,否则都返回一个list
参数function:只有一个参数的函数,如果function为None,filter()将返回整个sequence。
参数sequence:一个序列(字符串、元组、列表等)
def testFilter(x):
return x%2 #x是否能被2整除 print filter(testFilter,range(1,10)) #返回不能被2整除的序列
print filter(None,range(1,10)) #返回整个range(1,10)序列
运行结果:
>>>
[1, 3, 5, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
2.map(function, sequence) 逐个从sequence中取一个元素传入function,function的每个返回值组成列表作为map函数的返回值
参数function:可以有一个参数,或者多个参数,如果有多个参数,对应的map函数的sequence参数也应该有多个,并且每个sequence的元素个数相同
参数sequence:一个序列(字符串、元组、列表等)
def testMap(x,y):
return x+y
print map(testMap,range(1,5),range(1,5))
print map(testMap,range(1,5),range(1,3))
运行结果:
>>>
[2, 4, 6, 8] Traceback (most recent call last):
File "C:/Users/PC/Desktop/pythonstudy/testfff.py", line 11, in <module>
print map(testMap,range(1,5),range(1,3))
File "C:/Users/PC/Desktop/pythonstudy/testfff.py", line 9, in testMap
return x+y
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
3.reduce(function, sequence) 取sequnce的第一个元素和第二个元素作为初始值传入function,计算后function的返回值和sequnce的下一个元素作为参数传入function进行计算,直到sequence的所有元素计算完成,将最后得到的值作为reduce的返回值
function:两个参数的函数
sequence:一个序列(字符串、元组、列表等)
注:reduce函数还可以有第三个参数,用来初始化第一个用于计算的值
如果sequence只有一个元素,那么reduce将直接返回该值,如果sequence为空,则会引起一个错误
def testReduce(x,y):
return x+y print reduce(testReduce,range(10)) #打印range(10)的所有元素相加的值,计算过程:0+1+2+..+9
print reduce(testReduce,range(10),10)#打印10和range(10) 所有元素相加的值,计算过程:10+0+1+2+...+9
运行结果:
>>>
45
55
(Python)list的内建函数 filter(), map(), 和 reduce()的更多相关文章
- python之高阶函数--map()和reduce()
以下为学习笔记:来自廖雪峰的官方网站 1.高阶函数:简单来说是一个函数里面嵌入另一个函数 2.python内建的了map()和reduce()函数 map()函数接收两参数,一个是函数,一个是Iter ...
- python中的zip、map、reduce 、lambda、filter函数的使用
飞机票 lambda函数 lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是 ...
- Python高阶函数(Map、Reduce、Filter)
Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用 ...
- Python高阶函数(Map、Reduce、Filter)和lambda函数一起使用 ,三剑客
Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用 ...
- Python内置函数filter, map, reduce
filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当 ...
- python高阶函数(Map、Reduce、Filter、lamba)
Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 代码如下: >>> def f(x): . ...
- python中的lambda、map、reduce、filter
filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决 ...
- python中的zip、map、reduce 、lambda函数的使用。
lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...
- Python 函数进阶(filter/map/json/zip)
一.函数即变量 def say(name): print(name)ybq = say #可以被赋值给其他变量ybq('Amily') #调用函数 函数名:say 函数体:第1-2行 返回值:retu ...
随机推荐
- Notice: Trying to get property of non-object problem(PHP)解决办法 中间件只能跳转不能返任何数据
这里实际是调用了一个zend的数据库访问的方法,使用了fetchAll方法,但由于数据库中没有该记录,所以返回的对象是null,所以我就判断对象是否为null: 复制代码代码如下: if($obj== ...
- EntityFramework tt模板
http://www.cnblogs.com/hanyinglong/archive/2013/04/18/3029649.html
- Navicat链接Oracle提示ORA-12737
ORA-12737: Instant Client Light: unsupported server character set string Cause: The character set sp ...
- NGUI之自适应屏幕
转载: 雨松MOMO 2014年05月04日 于 雨松MOMO程序研究院 发表 ,原文链接 现在用unity做项目 90%都是用NGUI,并且我个人觉得NGUI应该算是比较成熟的UI插件,虽然他 ...
- oracle 常见恢复
author by :shawnloong 环境:windows 2008 r2 sp1 db:oracle 11g r2 做之前记得做个完整备份 ONFIGURE RETENTION POLICY ...
- tinyxml学习一
在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. ...
- 不让Win7休眠的设置
1:原因 目前有一个项目是采用微服务的架构搭建的,其中一个微服务的数据库是在一位同事的电脑上(Win7系统),一旦这台电脑休眠,对应的数据库服务就访问不了,所以,需要保持此台电脑永不休眠. 2:傻瓜式 ...
- MySQL 常用命令(持续更新)
停止启动MySQL服务 停止:net stop mysql启动:net start mysql 查看正在运行的线程 SHOW PROCESSLIST SHOW FULL PROCESSLIST 杀死线 ...
- mybatis关联查询,一对一,一对多
注:这篇文章的代码有部分删减,不能直接使用,不过关键代码都存在 应用场景: 想用mybatis做关联查询,并且把查询出的数据自动组装成对象可以使用关联查询. 1.一对一实现 例如:一部小说,属于一个 ...
- no 'object' file generated
c++编译的时候出现如下的错误: no 'object' file generated [解决方法] Go to project properties -> configurations p ...