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 re模块介绍
Nov 30 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python中基础的socket编程实战攻略
Jun 01 Python
Python编码爬坑指南(必看)
Jun 10 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
python主线程捕获子线程的方法
Jun 17 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
pandas中DataFrame检测重复值的实现
May 26 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 登录完成后如何跳转上一访问页面
2014/01/14 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
newxtree.js代码
2007/03/13 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
Python Requests 基础入门
2016/04/07 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python实现求数列和的方法示例
2018/01/12 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
opencv python如何实现图像二值化
2020/02/03 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
pytorch简介
2020/11/11 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
软件工程专业推荐信
2013/10/28 职场文书
关于迟到的检讨书
2014/01/26 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
vue使用echarts实现折线图
2022/03/21 Vue.js
MySQL添加索引特点及优化问题
2022/07/23 MySQL