python 内建函数 filter,map和reduce
python 内建函数 filter,map和reduce, 三个函数比较类似,都是应用于序列的内置函数,常见的序列包括list、tuple、str等。而且三个函数都可以和lambda表达式结合使用。下面分别介绍。
一、filter
filter(bool_func,seq):此函数的功能类似过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。
例如 : 从[1,2,3,4,5,6,7,8,9]序列中获取被3整除的序列
print filter(lambda x: x%3 == 0,[1,2,3,4,5,6,7,8,9])
结果为:[3, 6, 9]
二、map
map(func,seq1[,seq2...]):
对可迭代函数'iterable'中的每一个元素应用‘function’方法,将结果作为list返回。
例如:
1、def add100(x):
return x + 10
list1 = [10,20,30]
print map(add100,list1)
输出:[20, 30, 40]
map 使list1中的所有元素都执行了add100方法,返回了结果list
2、如果给出了额外的可迭代参数,则对每个可迭代参数中的元素‘并行’的应用‘function’
例如:
def fnXYZ(x,y,z):
return x*100 + y*10 +z
list1 = [10,20,30]
list2 = [40,50,60]
list3 = [70,80,90]
print map(fnXYZ, list1,list2,list3)
结果输出:[1470, 2580, 3690]
结果在每个list中,取出了下标相同的元素,执行了fnXYZ()函数
3、如果'function'给出的是‘None’,自动假定一个‘identity’函数
例如:
list1 = [10,20,30]
print map(None,list1)
输出:[10,20,30]
def fnXYZ(x,y,z):
return x*100 + y*10 +z
list1 = [10,20,30]
list2 = [40,50,60]
list3 = [70,80,90]
print map(None, list1,list2,list3)
结果输出:[(10, 40, 70), (20, 50, 80), (30, 60, 90)]
4、利用map()
函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
输入:['adam', 'LISA', 'barT']
,输出:['Adam', 'Lisa', 'Bart']
。
input =['adam', 'LISA', 'barT']
print map(lambda x:x.capitalize(), input) # 这里调用了字符串内置函数capitalize(首字母大写,其余小写)
结果:['Adam', 'Lisa', 'Bart']
三、reduce
reduce(func,seq[,init]):func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值:如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。
例如:
print reduce(lambda x,y : x * y, [1,2,3,4,5,6])
结果:720
n=5
print reduce(lambda x,y: x * y,range(1,n)) #n的阶乘,
当n=5时,结果为:24
print reduce(lambda x,y: x * y,range(1,n),10) #n的阶乘的10倍
结果:240
python 内建函数 filter,map和reduce的更多相关文章
- (Python)list的内建函数 filter(), map(), 和 reduce()
这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce(). 1.filter(function, sequence) 逐个从sequence中取一个 ...
- 【python】filter,map,reduce和lambda函数介绍
filter(function, iterable)map(function, iterable)reduce(function, sequence) filter将 function依次作用于ite ...
- Python里的map、reduce、filter、lambda、列表推导式
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- python中的map、reduce、filter、sorted函数
map.reduce.filter.sorted函数,这些函数都支持函数作为参数. map函数 map() 函数语法:map(function, iterable, ...) function -- ...
- Python函数式编程——map()、reduce()
文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...
- Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...
- Python 中的map、reduce函数用法
#-*- coding:UTF-8 -*- #map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回 def f(x): retu ...
- (转)Python函数式编程——map()、reduce()
转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...
- Python 中的map和reduce学习笔记
map和reduce都是Python中的内置函数 map函数接受两个参数,第一个参数是函数,第二个参数是列表,将函数依次作用于列表中的元素,并返回一个元素 reduce同样以函数和列表作为参数,区别在 ...
随机推荐
- PHP算法--将数字金额转换成大写金额
最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...
- 关于常用的git命令列表
我博客园中所写的git内容几乎都是看的蒋鑫老师的<git权威指南>这本书实在太好了. 常用的Git命令. git add 添加到暂存区 git add interactive 交互式添 ...
- MSP430矩阵及独立键盘
在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘 ...
- js ie8不支持项总结
不支持filter,trim 要用jquery 的$filter,$trim 数组不能用for in 要用for 数组没有indextOf方法 不能使用关键字,如true ,default IE8 ...
- C#学习笔记12:枚举、结构、数组基础学习
枚举:public enum MyEnum { 值1, 值2, 值3 } Public enum Season { 春, 夏, 秋, 冬 } 枚举的作用:规范用户的输入,枚举可以转换为int类型,可以 ...
- C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一
多态: 多态是面向对象的三大特征(封装.继承.多态)之一. 什么是多态? 一个对象表现出多种状态. 多态的实现方法: 1.虚方法: 2.抽象方法: 3.接口. PS:New 关键词可以隐藏父类的方法. ...
- SSH无密码登陆问题解决
转载 http://my.oschina.net/hunzi/blog/10687 安装好Cygwin后,SSH需要设置为无密码登陆, 首先查看是ssh还是ssh2:ls -l `which ssh` ...
- ###《Max-Margin Early Event Detectors》
Paper reading. #@author: gr #@date: 2014-03-11 #@email: forgerui@gmail.com Early Detection Abstract: ...
- ios - cordova 简介
Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的 ...
- HttpClient Post Get请求方法,留在以后可能会用到
/// <summary> /// Post请求返回实体 /// </summary> /// <param name="url">请求地址&l ...