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的更多相关文章

  1. (Python)list的内建函数 filter(), map(), 和 reduce()

    这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce(). 1.filter(function, sequence)  逐个从sequence中取一个 ...

  2. 【python】filter,map,reduce和lambda函数介绍

    filter(function, iterable)map(function, iterable)reduce(function, sequence) filter将 function依次作用于ite ...

  3. Python里的map、reduce、filter、lambda、列表推导式

    Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...

  4. python中的map、reduce、filter、sorted函数

    map.reduce.filter.sorted函数,这些函数都支持函数作为参数. map函数 map() 函数语法:map(function, iterable, ...) function -- ...

  5. Python函数式编程——map()、reduce()

    文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...

  6. Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...

  7. Python 中的map、reduce函数用法

    #-*- coding:UTF-8 -*- #map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回 def f(x): retu ...

  8. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

  9. Python 中的map和reduce学习笔记

    map和reduce都是Python中的内置函数 map函数接受两个参数,第一个参数是函数,第二个参数是列表,将函数依次作用于列表中的元素,并返回一个元素 reduce同样以函数和列表作为参数,区别在 ...

随机推荐

  1. Android_AsyncTask_json

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  2. 为Photoshop添加右键快捷

    打开注册表,开始--->运行--->regedit 找到  HKEY_CLASSES_ROOT  <----> *<---->shell 新建项,使用Photosh ...

  3. Flash cs6 帧上的菱形原来是关键帧

    假如需要删除这个关键帧,选中它,然后右键,"清除关键帧",相应的类型即可. 因为之前学了一点点Flash,没见过帧上面这个菱形图标,才知道是关键帧.

  4. 【转】Myeclipse8.5 反编译插件 jad 安装

    [转]Myeclipse8.5 反编译插件 jad 安装 准备工作 下载jad.exe文件下载window版本:http://varaneckas.com/jad/ 下载jadeclipse插件:ht ...

  5. oracle拼接字段用||

    ① //dual相当于一个临时表.用来测量@@@@H210000000003I4R 的长度用length() select length('@@@@H210000000003I4R') from du ...

  6. 常用meta整理【转载】

    < meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 we ...

  7. SQL Server高级内容之表表达式和复习

    1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询.  (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...

  8. [转]Windows Shell 编程 第四章 【来源 http://blog.csdn.net/wangqiulin123456/article/details/7987933】

    第四章 文件的本质 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,‘隐藏的,‘存档的’,或‘系统的’状态标志.然而,Windos95(及后来的WindowsNT4.0 ...

  9. Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)

    今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...

  10. Java编写ArrayBasic制作一个简单的酒店管理系统

    听老师讲了一些ArrayBasic的一些知识,让制作一个酒店管理系统,要求:显示酒店所有房间列表,预订房间.... 经过老师的指导写了一个代码,如下: import java.util.Scanner ...