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的字典和列表的使用中一些需要注意的地方
Apr 24 Python
Python数据操作方法封装类实例
Jun 23 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
python发送邮件脚本
May 22 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
使用python接入微信聊天机器人
Mar 31 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
带你学习Python如何实现回归树模型
Jul 16 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 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
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
js日期联动示例
2014/05/02 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
详解angular element()方法使用
2017/04/08 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
Python标准库与第三方库详解
2014/07/22 Python
python 类详解及简单实例
2017/03/24 Python
python日志模块logbook使用方法
2019/09/19 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
销售人员职业生涯规划范文
2014/03/01 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
机房搬迁方案
2014/05/01 职场文书
创先争优公开承诺书
2014/08/30 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
治庸问责心得体会
2014/09/12 职场文书
实习介绍信范文
2015/05/05 职场文书