摘要:今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式。

名称是用于引用或寻址任何实体的约定。我们周围的几乎所有事物都有名字。编程领域也与此一致。但这是必须命名的吗?还是您可以拥有“匿名”商品?答案是肯定的。Python提供了Lambda函数,也称为匿名函数,实际上是无名的。因此,让我们按以下顺序继续学习Python的这些“匿名之谜”。

  • Why are Python Lambda Functions required?
  • What are Python Lambda Functions?
  • How to write Lambda Functions?
  • How do Anonymous functions reduce the size of the code?
  • Python Lambda functions within user defined functions
  • How to use Anonymous functions within:
    • filter()
    • map()
    • reduce()

因此,让我们开始:)

为什么要使用Python Lambda函数?

当您只需要一次使用某些功能时,匿名功能的主要目的就会显现出来。可以在任何需要的地方创建它们。由于这个原因,Python Lambda函数也称为抛出函数,与其他预定义函数(例如filter(),map()等)一起使用。与普通的python函数。

为了证明这一点,让我们继续学习Python Lambda函数。

什么是Python Lambda函数?

Python Lambda函数是没有任何名称的函数。它们也称为匿名或无名功能。“ lambda”一词不是名称,而是关键字。此关键字指定后面的函数是匿名的。

现在您已经知道这些匿名函数指的是什么,让我们进一步了解一下如何编写这些Python Lambda函数。

如何用Python编写Lambda函数?

使用lambda运算符创建Lambda函数,其语法如下:

句法:

lambda参数:表达式

Python lambda函数可以具有任意数量的参数,但只需要一个表达式。输入或自变量可以从0开始,并可以达到任何限制。就像任何其他函数一样,具有不带输入的lambda函数也很好。因此,您可以使用以下任何格式的lambda函数:

例子:

lambda:“指定目的”

在这里,lambda函数不接受任何参数。

例子:

拉姆达一个1:“指定使用的1 “

在这里,lambda接受一个输入,即1。

同样,您可以具有lambda a 1,a 2,a 3 ..a n。

让我们举几个例子来证明这一点:

范例1:

a = lambda x: x*x
print(a(3))

输出: 9

范例2:

a = lambda x,y: x*y
print(a(3,7))

输出: 21

如您所见,我在这里举了两个例子。第一个示例仅使用带有一个表达式的lambda函数,而第二个示例具有传递给它的两个参数。请注意,两个函数都有一个表达式,后跟参数。因此,在需要多行表达式的地方不能使用lambda函数。

另一方面,普通的python函数可以在其函数定义中使用任意数量的语句。

匿名函数如何减少代码的大小?

在比较所需的代码量之前,让我们首先写下常规函数的语法,然后将其与前面所述的lambda函数的语法进行比较。

Python中的任何常规函数都是使用def关键字定义的,如下所示:

句法:

def function_name(parameters):

语句

如您所见,lambda函数所需的代码量比普通函数少得多。

让我们用现在的普通函数重写前面的示例。

例子:

def my_func(x):
return x*x
print(my_func(3))

输出: 9

如您所见,在上面的示例中,我们需要在my_func中使用return语句来计算3的平方值。相反,lambda函数不使用此return语句,而是使用匿名函数的主体在冒号后跟函数本身写在同一行。因此,函数的大小小于my_func的大小。

但是,上述示例中的lambda函数是使用其他一些变量a调用的。这样做是因为这些函数是无名的,因此需要调用某些名称。但是,当您需要实际分配其他名称来调用它们时,为什么要使用这样的无名函数,这一事实似乎令人困惑?当然,在为我的函数分配名称a之后,它不再不再是无名的了!正确的?

这是一个合理的问题,但重点是,这不是使用这些匿名函数的正确方法。

匿名函数最好在其他将函数用作参数或返回函数作为输出的其他高阶函数中使用。为了证明这一点,让我们现在继续进行下一个主题。

用户定义函数中的Python Lambda函数:

如上文所述,lambda函数可在其他函数中使用,以标记出最大的优势。

以下示例由new_func组成,这是一个带有一个参数x的常规python函数。然后将此参数添加到通过lambda函数提供的未知参数y中。

例子:

def new_func(x):
return(lambda y: x+y)
t=new_func(3)
u=new_func(2)
print(t(3))
print(u(3))

输出:

6
5

如您所见,在上面的示例中,每当我们使用new_func()时,都会调用new_func中存在的lambda函数。每次,我们都可以将单独的值传递给参数。

既然您已经了解了如何在高阶函数中使用匿名函数,那么让我们继续了解它的最流行用法之一是在filter(),map()和reduce()方法中。

如何在filter(),map()和reduce()中使用匿名函数:

filter()中的匿名函数:

筛选():

filter()方法用于在另一个作为参数传递的函数的帮助下,过滤给定的iterables(列表,集合等),以测试所有元素为真还是假。

该函数的语法为:

句法:

过滤器(函数,可迭代)

现在考虑以下示例:

例子:

my_list = [2,3,4,5,6,7,8]
new_list = list(filter(lambda a: (a/3 == 2), my_list))
print(new_list)

输出: [6]

在这里,my_list是可迭代值的列表,该值传递给过滤器函数。此函数使用lambda函数检查列表中是否有任何值(除以3后等于2)。输出由满足匿名函数中存在的表达式的列表组成。

地图():

Python中的map()函数是将给定函数应用于所有可迭代对象并返回新列表的函数。

句法:

地图(函数,可迭代)

让我们以一个示例来演示lambda函数在map()函数中的用法:

例子:

my_list = [2,3,4,5,6,7,8]
new_list = list(map(lambda a: (a/3 != 2), li))
print(new_list)

输出:

[True,True,True,True,False,True,True]

上面的输出显示,只要可迭代变量的值除以3,就不等于2,则返回的结果应为True。因此,对于my_list中的所有元素,当条件更改为False时,它将返回true(除了值6之外)。

减少():

reduce()函数用于将某些其他函数应用于作为参数传递给它的元素列表,并最终返回单个值。

该函数的语法如下:

句法:

减少(功能,顺序)

例子:

from functools import reduce
reduce(lambda a,b: a+b, [23,21,45,98])

下图描述了上面的示例:

输出: 187

输出清楚地表明,列表的所有元素都被连续添加以返回最终结果。

本文分享自华为云社区《从零开始学python | 什么是Lambda函数以及如何使用它们?》,原文作者:Yuchuan 。

点击关注,第一时间了解华为云新鲜技术~

细说Python Lambda函数的用法,建议收藏!的更多相关文章

  1. python lambda表达式简单用法【转】

    python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...

  2. python format()函数的用法

    Python format() 函数的用法 复制自博主 chunlaipiupiupiu 的博客,如有侵权,请联系删除 python中format函数用于字符串的格式化 通过关键字 1 print(' ...

  3. Python eval()函数的用法

    Python eval()函数的用法 eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有 ...

  4. C++ lambda函数及其用法(转)

    由于接触C++不久,很多东西比较陌生,今天看阿里云OSS的C++ SDK文件下载部分例子,发现有如下lambda表达式用法,故了解一下相关知识 /*获取文件到本地文件*/ GetObjectReque ...

  5. [编程基础] Python lambda函数总结

    Python lambda函数教程展示了如何在Python中创建匿名函数.Python中的匿名函数是使用lambda关键字创建的. 文章目录 1 介绍 1.1 简单使用 1.2 Python lamb ...

  6. Python Lambda 的简单用法

    下面代码简单举例介绍以下 lambda的用法. from functools import reduce #1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而de ...

  7. python - Lambda函数 匿名函数

    Lambda 匿名函数 python 使用 lambda 来创建匿名函数. lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda ...

  8. 【Python从入门到精通】(十一)Python的函数的方方面面【收藏下来保证有用!!!】

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文主要介绍Python的函数,函数的定义,使用,可变参数等等都有详细介绍. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎 ...

  9. Python lambda函数

    python允许定义单行的小函数,定义lambda函数的形式如下: lambda 参数:表达式lambda函数默认返回表达式的值,可接收任意个参数,包括可选参数,但是表达式只有一个.

  10. python lambda函数详细解析(面试经常遇到)

    1 作用:通常是用来在python中创建匿名函数的 2 格式: lambda 参数[,参数] : 表达式 3 注意: (1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数 (2) ...

随机推荐

  1. 如何在 Ubuntu上使用snap安装Docker

    1 检查系统版本 具有sudo或root用户权限 2 安装 SNAP ctrl+alt+T 打开终端 运行以下命令以安装 SNAP sudo apt update sudo apt install s ...

  2. Vue之自定义过滤器

    使用Vue.filter('过滤器名称',方法); 1. <!DOCTYPE html> <html lang="en"> <head> < ...

  3. Golang 面向对象深入理解

    1 封装 Java 中封装是基于类(Class),Golang 中封装是基于结构体(struct) Golang 的开发中经常直接将成员变量设置为大写使用,当然这样使用并不符合面向对象封装的思想. G ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (142)-- 算法导论12.1 2题

    二.用go语言,二叉搜索树性质与最小堆性质(见 6.1 节)之间有什么不同?能使用最小堆性质在 O(n)时间内按序输出一棵有 n 个结点树的关键字吗?可以的话,请说明如何做,否则解释理由. 文心一言: ...

  5. 本地训练,立等可取,30秒音频素材复刻霉霉讲中文音色基于Bert-VITS2V2.0.2

    之前我们使用Bert-VITS2V2.0.2版本对现有的原神数据集进行了本地训练,但如果克隆对象脱离了原神角色,我们就需要自己构建数据集了,事实上,深度学习模型的性能和泛化能力都依托于所使用的数据集的 ...

  6. Mysql中的FOREIGN_KEY_CHECKS方法【外键约束作用】

    一.命令行 首先FOREIGN_KEY_CHECKS方法的作用是用来启动和关闭外键约束的方法. 二.外键约束 即数据库中两个数据表之间的某个列建立的一种联系.MySQL通过外键约束的引入,可以使得数据 ...

  7. 做数据分析,我们需要懂多少excel知识?

    数据分析所需的Excel知识详解 在进行数据分析工作时,Excel是一个非常常用且强大的数据处理工具.以下是数据分析中常用的Excel知识点和技巧的详细描述. 1. 基本操作 在使用Excel进行数据 ...

  8. MySQL 有哪些常见的面试题

    MySQL 是一种常用的关系型数据库管理系统,在面试过程中经常会涉及与 MySQL 相关的问题.以下是一些常见的 MySQL 面试题: 1. 介绍一下 MySQL 和其他数据库管理系统的区别. - M ...

  9. windows中MySQL忘记密码

    前言:   一直都是连接公司项目数据库,许久未连接本地的数据库,密码忘记了 步骤: 进入本机安装mysql的bin目录下 暂停mysql服务 net stop mysql 设置跳过密码授权登录  my ...

  10. 给 Web 前端工程师看的用 Rust 开发 wasm 组件实战

    什么是wasm组件? wasm 全称 WebAssembly,是通过虚拟机的方式,可以在服务端.客户端如浏览器等环境执行的二进制程序.他有速度快.效率高.可移植的特点. 对我们 Web 前端工程最大的 ...