Python lambda表达式filter、map、reduce函数用法解析


Posted in Python onSeptember 11, 2019

前言

lambda是表达式,用于创建匿名函数,可以和filter、map、reduce配合使用。

本文环境Python3.7。

一、lambda表达式

lambda 只包含一个语句,用于创建匿名函数。

语法:

lambda [arg1 [,arg2,.....argn]]:expression

arg1 -- 参数,可以有多个

expression -- 表达式

使用例子:

f1 = lambda x : x > 10
print(f1(1)) #输出:False
print(f1(11)) #输出:True
f2 = lambda x, y: x + y
print(f2(1,2)) #输出:3

二、filter() 函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回迭代器对象(Python2是列表),可以使用list()转换为列表。

语法:

filter(function, iterable)

function -- 函数

iterable -- 序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到迭代器对象中。

使用例子:

def isEven(x):
  return x % 2 == 0
list1 = filter(isEven,[1,2,3,4,5,6])
print(list(list1)) #输出:[2, 4, 6]
#可以用lambda
list2 = filter(lambda x:x%2==0, [1,2,3,4,5,6])
print(list(list2)) #输出:[2, 4, 6]
#也可以用列表推导式
list3 = list(x for x in [1,2,3,4,5,6] if x%2==0)
print(list3) #输出:[2, 4, 6]

三、map()函数

map()接收一个函数 f 和一个或多个序列 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 迭代器(Python2是列表) 并返回。

语法:

map(function, iterable, ...)

function -- 函数,如果iterable有多个序列,则function的参数也对应有多个

iterable -- 一个或多个序列

使用例子:

def multi(x):
  return x * 2

def multi2(x, y):
  return x * y

#参数只有1个序列时
list1 = map(multi,[1,2,3,4,5])
print(list(list1)) #输出:[2, 4, 6, 8, 10]

#用lambda改写上面语句
list1_1 = map(lambda x : x*2, [1,2,3,4,5])
print(list(list1_1)) #输出:[2, 4, 6, 8, 10]

#参数有2个序列时,
list2 = map(multi2,[1,2,3,4,5],[6,7,8,9,10])
print(list(list2)) #对2个列表数据的相同位置元素相乘,输出:[6, 14, 24, 36, 50]

#用lambda改写上面语句
list2_1 = map(lambda x,y : x*y, [1,2,3,4,5],[6,7,8,9,10])
print(list(list2_1)) #输出:[6, 14, 24, 36, 50]

#当2个序列长度不一致时,结果以2个序列中的最短长度为准
list2_2 = map(lambda x,y : x*y, [1,2,3],[6,7,8,9,10])
print(list(list2_2)) #输出:[6, 14, 24]
list2_3 = map(lambda x,y : x*y, [1,2,3,4,5],[6,7,8])
print(list(list2_3)) #输出:[6, 14, 24]

四、reduce()函数

reduce()函数对一个数据集合的所有数据进行操作:用传给 reduce 中的函数 function(必须有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

在Python2中reduce()是内置函数,Pytho3移到functools 模块。

语法:

reduce(function, iterable[, initializer])

function -- 函数,有两个参数

iterable -- 可迭代对象

initializer -- 可选,初始参数

使用例子:

from functools import reduce
def add(x, y):
  return x + y
def mulit(x, y):
  return x * y
print(reduce(add, [1, 2, 3, 4, 5])) #输出:15
print(reduce(add, [1, 2, 3, 4, 5], 10)) #输出:25
print(reduce(mulit, [1, 2, 3, 4, 5])) #输出:120
print(reduce(mulit, [1, 2, 3, 4, 5], 10)) #输出:1200
print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5]))#输出:15
print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5], 10))#输出:25

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程之读取网站根目录实例
Sep 30 Python
Python import自定义模块方法
Feb 12 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
利用Python读取文件的四种不同方法比对
May 18 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
教你用Python写安卓游戏外挂
Jan 11 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
python re模块的高级用法详解
Jun 06 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
python高温预警数据获取实例
Jul 23 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 #Python
Python range、enumerate和zip函数用法详解
Sep 11 #Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 #Python
Python使用APScheduler实现定时任务过程解析
Sep 11 #Python
基于Python实现剪切板实时监控方法解析
Sep 11 #Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 #Python
面向对象学习之pygame坦克大战
Sep 11 #Python
You might like
PHP的宝库目录--PEAR
2006/10/09 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
javascript天然的迭代器
2010/10/29 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
详解Python当中的字符串和编码
2015/04/25 Python
Python中subprocess的简单使用示例
2015/07/28 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python登录注册验证功能实现
2018/06/18 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Python创建数字列表的示例
2019/11/28 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
前处理组长岗位职责
2014/03/01 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
服务行业标语口号
2015/12/26 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
python中的被动信息搜集
2021/04/29 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL