目录

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 表达式相关推荐

  1. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  2. c++ lambda函数_C++ Lambda表达式

    利用Lambda表达式,可以方便的定义和创建匿名函数.Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值. 当一 ...

  3. C#语法之匿名函数和Lambda表达式

    上一篇博客主要是对委托和事件做了一小结,这篇是在上一篇博客的基础上对匿名函数和Lambda表达式小结.还是接着上一篇说起,在上一篇中也说了委托是一种数据结构,主要是解决让函数作为参数的问题.在使用委托 ...

  4. 学习Kotlin(五)函数与Lambda表达式

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  5. python之lambdas函数(lambda表达式)

    python之lambdas函数(lambda表达式) lambda函数,也称为lambda表达式. lambda函数(或lambda表达式)的语法: lambda arguments: expres ...

  6. Python_Task06:函数与Lambda表达式

    函数与Lambda表达式 学习教程 1.函数 1. 函数 2.函数的定义 **3.函数的调用** **4.函数文档** **5.函数参数** 1. 位置参数 2. 默认参数 3. 可变参数 4. 关键 ...

  7. 【Kotlin】Kotlin的高阶函数与Lambda表达式

    前言 Kotlin的高阶函数与Lambda表达式是Kotlin的两大特色,使用频率非常高.熟悉它的用法与本质对于简化代码.提升开发效率非常有帮助. 这两个概念不是同一个东西,但是又有非常紧密的关联.这 ...

  8. Kotlin高阶函数及Lambda表达式实现接口回调

    文章目录 什么是高阶函数? Lambda 表达式 使用Kotlin高阶函数实现接口回调 Java中接口使用 Kotlin中接口使用 什么是高阶函数? 高阶函数是将函数作为参数或者返回值的函数. 特点 ...

  9. JavaScript箭头函数(Lambda表达式)

    箭头函数也叫lambda表达式 据说其主要意图是定义轻量级的内联回调函数 栗有: 1 var arr = ["wei","ze","yang" ...

  10. python3 入门 (三) 函数与lambda表达式、闭包

    函数 是组织好的.可重复使用的.用来实现单一或相关联功能的代码段. 函数代码块以def关键词开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 函 ...

最新文章

  1. 【Python】12、字典的实现
  2. zabbix-agent 启动不起来
  3. 2022年十大卫星技术创新及发展趋势
  4. 数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException
  5. boost::reinterpret_pointer_cast相关的测试程序
  6. 博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView
  7. 学习笔记 | 传统企业互联网改革之道
  8. OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out
  9. java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)
  10. 微星主板黑苹果_组装电脑哪个主板好?如何选择电脑主板?2020年电脑主板推荐及分析。...
  11. 程序员经常去的编程教学视频网站
  12. HttpResponse 417
  13. 从Mac远程控制Windows
  14. 头哥实践教学平台 CC++程序设计(计算机程序设计)基本输入输出 第2关:整数四则运算表达式的输出格式控制
  15. mysql是怎么实现多对多的_mysql复习篇及一对多和多对多的总结(17.6.26 )
  16. 如何用开源飞控PIXHAWK进行二次开发?
  17. 华为开发者联盟生态市场企业特惠GO第1期—应用软件专题
  18. 房卡麻将分析之一键入局
  19. javascript判断是否为移动端
  20. python 批量查询网页导出结果_python导出网页数据到excel表格-如何使用python将大量数据导出到Excel中的小技巧...

热门文章

  1. java上传文件夹文件
  2. [导入]饭后适宜吃14种健康零食
  3. 基于微信小程序的毕业设计题目(34)PHP小说平台小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  4. 智慧城市建设方案建议书——如何打造智慧城市
  5. 【Day3.3】美攻铁道市场零距离接触行驶中的火车
  6. 2022大宗商品现货交易所织梦网站模板源码+大气美观
  7. 下载美国气候数据中心地址
  8. 【PyG】简介 - 图神经网络
  9. Life's A Struggle
  10. 中华第一考----系统架构设计师考试