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中针对函数处理的特殊方法
Mar 06 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python常见异常分类与处理方法
Jun 04 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
Python KMeans聚类问题分析
Feb 23 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
python turtle绘图
May 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
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
js删除所有的cookie的代码
2010/11/25 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python实现自动发送邮件
2018/06/20 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
素质拓展感言
2014/01/29 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
安全负责人任命书
2014/06/06 职场文书
环卫个人总结
2015/03/03 职场文书
销售开票员岗位职责
2015/04/15 职场文书
房租涨价通知
2015/04/23 职场文书
2019教师的学习计划
2019/06/25 职场文书