Pythont特殊语法filter,map,reduce,apply使用方法


Posted in Python onFebruary 27, 2016

(1)lambda

lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数。类似于C语言中的宏,可以用在任何需要函数的地方。

基本语法如下:

函数名 = lambda args1,args2,...,argsn : expression

例如:

add = lambda x,y : x + y
print add(1,2)

(2)filter

filter函数相当于一个过滤器,函数原型为:filter(function,sequence),表示对sequence序列中的每一个元素依次执行function,这里function是一个bool函数,举例说明:

sequence = [1,2,3,4,5,6,7,8,9,10]
fun = lambda x : x % 2 == 0
seq = filter(fun,sequence)
print seq

以下代码就是表示筛选出sequence中的所有偶数。

filter函数原型大致如下:

def filter(fun,seq):
    filter_seq = []
    for item in seq:
        if fun(item):
            filter_seq.append(item)
    return filter_seq

(3)map

map的基本形式为:map(function,sequence),是将function这个函数作用于sequence序列,然后返回一个最终结果序列。比如:

seq = [1,2,3,4,5,6]
fun = lambda x : x << 2

print map(fun,seq)

map的函数源代码大致如下:

def map(fun,seq):
    mapped_seq = []
    for item in seq:
        mapped_seq.append(fun(item))
    return mapped_seq

(4)reduce

reduce函数的形式为:reduce(function,sequence,initVal),function表示一个二元函数,sequence表示要处理的序列,而initVal表示处理的初始值。比如:

seq = [1,2,3,4,5,6,7,8,9,10]
fun = lambda x,y: x + y

print reduce(fun,seq,0)

表示从初始值0开始对序列seq中的每一个元素累加,所以得到结果是55

reduce函数的源代码大致如下:

def reduce(fun,seq,initVal = None):
    Lseq = list(seq)
    if initVal is None:
        res = Lseq.pop(0)
    else:
        res = initVal
    for item in Lseq:
        res = fun(seq,item)
    return res

(5)apply

apply是用来间接地代替某个函数,比如:

def say(a,b):
    print a,b

apply(say,(234,'Hello World!'))
Python 相关文章推荐
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
python的unittest测试类代码实例
Dec 07 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
python numpy实现文件存取的示例代码
May 26 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
python安装scipy的步骤解析
Sep 28 Python
python 实现生成均匀分布的点
Dec 05 Python
python suds访问webservice服务实现
Jun 26 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
如何编写python的daemon程序
Jan 07 Python
关于python爬虫应用urllib库作用分析
Sep 04 Python
python 网络爬虫初级实现代码
Feb 27 #Python
Python数据库的连接实现方法与注意事项
Feb 27 #Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 #Python
学习python之编写简单乘法口诀表实现代码
Feb 27 #Python
学习python 之编写简单乘法运算题
Feb 27 #Python
python学习之编写查询ip程序
Feb 27 #Python
用python写的一个wordpress的采集程序
Feb 27 #Python
You might like
php db类库进行数据库操作
2009/03/19 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
取得传值的函数
2006/10/27 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JS实现div居中示例
2014/04/17 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
Linux常见面试题
2013/03/18 面试题
道路交通安全实施方案
2014/03/12 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
出生证明格式
2015/06/15 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android