函数6:lambda 表达式
目录
1. lambda基础
2. lambda 概述
2.1 表达式解析
2.2 简单应用
2.3 列表元素
3. lambda 表达式实操
3.1 lambda 用于闭包
3.2 lambda 用于 filter()
3.3 lambda 用于 map()
1. lambda基础
lambda 表达式语法结构如下:
lambda_expr ::= "lambda" [parameter_list] ":" expression
lambda 表达式被用于创建匿名函数,lambda parameters: expression 产生一个函数对象,该匿名函数对象可以类比如下方式定义的函数:
def <lambda>(parameters):return expression
请注意通过 lambda 表达式创建的函数不能包含语句或标注。
2. lambda 概述
2.1 表达式解析
匿名函数很大程度上简化了函数的的定义过程,Python允许使用lambda表达式来创建简单的匿名函数,如下两种形式等价:
lambda arg1, arg2, arg3, ... argN : expressiondef <lambda>(arg1, arg2, arg3, ... argN):return expression
lambda表达式,使用冒号(:)分隔函数的参数及返回值;
冒号的左边放置函数的参数,如果有多个参数,使用逗号(,)分隔;
冒号的右边放置函数的返回值,可以是一句可执行的代码语句,实现一些简单的函数操作。
2.2 简单应用
直接使用lambda表达式,返回匿名函数地址;
可以使用一个变量赋值为lambda表达式,此后便可以对该变量进行反复调用。
#直接使用lambda表达式,返回匿名函数地址
lambda var1,var2:var1//var2
<function <lambda> at 0x000001B5155C65E0>#可以使用一个变量赋值为lambda表达式,此后便可以对该变量进行反复调用
x = lambda var1,var2:var1//var2
x
<function <lambda> at 0x000001B5155C64C0>
x(12,5)
2
x(9,3)
3
2.3 列表元素
lambda表达式和传统函数,都可以作为列表的元素;
一般不推荐使用如下形式,不利于代码的阅读和检查。
#传统函数作为列表元素
def funx(var1,var2):
... return var1//var2
...
x = [funx,15,5]
x[0](x[1],x[2])
3#lambda表达式作为列表元素
y = [lambda var1,var2:var1**var2,4,3]
y[0](y[1],y[2])
64
3. lambda 表达式实操
3.1 lambda 用于闭包
lambda表达式也可以作为替代一些简单的函数,作为闭包的内部函数使用。
#使用lambda表达式的闭包
def fun1(x):
... return lambda y : y ** x
...
#生成工厂函数
square = fun1(2)
cube = fun1(3)#执行函数成功
square(4)
16
cube(5)
125
3.2 lambda 用于 filter()
filter() 函数【参见filter函数】,即filter(function, iterable)是一个过滤器,用于在海量的数据里提取有用的信息。
如果提供的函数是 None,则会假设它是一个 “鉴真” 函数,即可迭代对象中所有值为假的元素会被移除。
请注意,filter(function, iterable) 相当于以下两个生成器表达式:
- 当 function 参数不是 None 的时候相当于 (item for item in iterable if function(item));
- 当 function 是 None 的时候为 (item for item in iterable if item)。
lambda表达式用于 filter() ,实操如下:
s = [0,1,2,3,4,5,6,7,8,9]#lambda表达式计算序列中每个元素对2的余数,余数不为0的元素即为真,返回所有奇数
list(filter(lambda x : x % 2,s))
[1, 3, 5, 7, 9]#lambda表达式计算序列中每个元素是否大于等于5,数值大于等于5的元素即为真,返回所有大于等于5的元素
list(filter(lambda x : x >= 5,s))
[5, 6, 7, 8, 9]
3.3 lambda 用于 map()
map() 函数,即 map(function, *iterables)根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果以迭代器的形式返回。
如果传入了多个可迭代对象,那么指定的函数也必须能够支持相同个数的参数;当有多个可迭代对象时,最短的可迭代对象终止时,则整个迭代过程跟着结束;对于函数的输入已经是参数元组的情况,我们应该使用 itertools.starmap() 函数来实现。
lambda表达式用于 map() ,实操如下:
s1 = [0,1,2,3,4,5,6,7,8,9]
s2 = [1,1,1,1,1,1,1,1,1,1]
s3 = [1,0,1,0,1,0,1,0,1,0]list(map(lambda x1,x2,x3 : x1 ** (x2 * x3),s1,s2,s3))
[0, 1, 2, 1, 4, 1, 6, 1, 8, 1]
list(map(lambda x1,x2,x3 : (x1 + x2) * x3,s1,s2,s3))
[1, 0, 3, 0, 5, 0, 7, 0, 9, 0]
函数6:lambda 表达式相关推荐
- 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- c++ lambda函数_C++ Lambda表达式
利用Lambda表达式,可以方便的定义和创建匿名函数.Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值. 当一 ...
- C#语法之匿名函数和Lambda表达式
上一篇博客主要是对委托和事件做了一小结,这篇是在上一篇博客的基础上对匿名函数和Lambda表达式小结.还是接着上一篇说起,在上一篇中也说了委托是一种数据结构,主要是解决让函数作为参数的问题.在使用委托 ...
- 学习Kotlin(五)函数与Lambda表达式
推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...
- python之lambdas函数(lambda表达式)
python之lambdas函数(lambda表达式) lambda函数,也称为lambda表达式. lambda函数(或lambda表达式)的语法: lambda arguments: expres ...
- Python_Task06:函数与Lambda表达式
函数与Lambda表达式 学习教程 1.函数 1. 函数 2.函数的定义 **3.函数的调用** **4.函数文档** **5.函数参数** 1. 位置参数 2. 默认参数 3. 可变参数 4. 关键 ...
- 【Kotlin】Kotlin的高阶函数与Lambda表达式
前言 Kotlin的高阶函数与Lambda表达式是Kotlin的两大特色,使用频率非常高.熟悉它的用法与本质对于简化代码.提升开发效率非常有帮助. 这两个概念不是同一个东西,但是又有非常紧密的关联.这 ...
- Kotlin高阶函数及Lambda表达式实现接口回调
文章目录 什么是高阶函数? Lambda 表达式 使用Kotlin高阶函数实现接口回调 Java中接口使用 Kotlin中接口使用 什么是高阶函数? 高阶函数是将函数作为参数或者返回值的函数. 特点 ...
- JavaScript箭头函数(Lambda表达式)
箭头函数也叫lambda表达式 据说其主要意图是定义轻量级的内联回调函数 栗有: 1 var arr = ["wei","ze","yang" ...
- python3 入门 (三) 函数与lambda表达式、闭包
函数 是组织好的.可重复使用的.用来实现单一或相关联功能的代码段. 函数代码块以def关键词开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 函 ...
最新文章
- 【Python】12、字典的实现
- zabbix-agent 启动不起来
- 2022年十大卫星技术创新及发展趋势
- 数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException
- boost::reinterpret_pointer_cast相关的测试程序
- 博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView
- 学习笔记 | 传统企业互联网改革之道
- OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out
- java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)
- 微星主板黑苹果_组装电脑哪个主板好?如何选择电脑主板?2020年电脑主板推荐及分析。...
- 程序员经常去的编程教学视频网站
- HttpResponse 417
- 从Mac远程控制Windows
- 头哥实践教学平台 CC++程序设计(计算机程序设计)基本输入输出 第2关:整数四则运算表达式的输出格式控制
- mysql是怎么实现多对多的_mysql复习篇及一对多和多对多的总结(17.6.26 )
- 如何用开源飞控PIXHAWK进行二次开发?
- 华为开发者联盟生态市场企业特惠GO第1期—应用软件专题
- 房卡麻将分析之一键入局
- javascript判断是否为移动端
- python 批量查询网页导出结果_python导出网页数据到excel表格-如何使用python将大量数据导出到Excel中的小技巧...