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通过递归遍历出集合中所有元素的方法
Feb 25 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
python Pandas 读取txt表格的实例
Apr 29 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
python中round函数保留两位小数的方法
Dec 04 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP5函数小全(分享)
2013/06/06 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
Js base64 加密解密介绍
2013/10/11 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
Python解析xml中dom元素的方法
2015/03/12 Python
python绘图方法实例入门
2015/05/19 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
在vscode中配置python环境过程解析
2019/09/28 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
医学护理系毕业生求职信
2013/10/01 职场文书
肯尼迪就职演说稿
2013/12/31 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
庆元旦主持词
2015/07/06 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
MySQL中in和exists区别详解
2021/06/03 MySQL
详解Python常用的魔法方法
2021/06/03 Python
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL