Python如何使用带有 for 循环的 Lambda 函数
作者:火焰兔 发布时间:2021-05-28 05:06:05
lambda 语法
lambda 函数的语法只包含一个语句,表现形式如下:lambda [arg1 [,arg2,.....argn]]:expression
lambda 特性
lambda 函数是匿名的;lambda 函数有输入和输出;lambda 函数拥有自己的命名空间。
常见的lambda函数示例:
lambda x, y: x*y# 函数输入是x和y,输出是它们的积x*y
lambda:None# 函数没有输入参数,输出是None
lambda *args: sum(args)# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
lambda **kwargs: 1# 输入是任意键值对参数,输出是1
lambda 常见用法
1、将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。add = lambda x, y: x+y
相当于定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add就指向了具有加 * 能的函数。
这时我们如果执行add(1, 2),其输出结果就为 3。
2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
# 为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:
time.sleep=lambda x: None
# 这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
time.sleep(3)# 程序不会休眠 3 秒钟,而是因为lambda输出为None,所以这里结果是什么都不做
3、将lambda函数作为参数传递给其他函数。
Python如何使用带有 for 循环的 Lambda 函数
在 Python 中有一种函数叫做 Lambda 函数,它可以在一行代码中定义简单的函数。通常情况下,我们使用 Lambda 函数都是作为某个函数的参数传入。Lambda 函数可以极大地简化代码编写,提高代码执行效率。
一般来说,使用 Lambda 函数时不会用到 for 循环,因为 Lambda 函数通常是对输入变量作单个操作的函数。但是,在某些特定情况下,我们可能需要在 Lambda 函数中使用 for 循环。
为了更好地理解如何在 Lambda 函数中使用带有 for 循环,我们接下来通过实例来说明。
举例来说,我们要将一个列表中的所有元素都平方后输出。如果使用普通的函数,代码会是这个样子:
def square(x):
return x ** 2
lst = [1, 2, 3, 4, 5]
new_lst = []
for i in lst:
new_lst.append(square(i))
print(new_lst)
如果使用 Lambda 函数来完成这个任务,代码则可以变得非常简洁:
lst = [1, 2, 3, 4, 5]
new_lst = list(map(lambda x: x ** 2, lst))
print(new_lst)
如果此时我们要在 Lambda 函数中加入 for 循环,代码该如何编写呢?其实很简单,只需要把 for 循环写在 Lambda 函数的开头即可:
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = lambda x: [item for sublist in x for item in sublist]
new_lst = flattened(lst)
print(new_lst)
在上面的代码中,我们使用了一个嵌套列表,并将其扁平化(即将嵌套的列表展开成一个列表)。这个 Lambda 函数使用了 for 循环来遍历输入列表并扁平化它们。
需要注意的是,在 Lambda 函数中使用 for 循环时应该遵循以下两个注意事项:
Lambda 函数中的 for 循环通常只能用于简单的迭代,复杂的逻辑应该写在普通函数中;
Lambda 函数的语法非常简洁,但也不要为了追求简洁而使用复杂的嵌套结构,这会让代码难以理解和维护。
总的来说,使用 Lambda 函数配合 for 循环可以让代码变得更加简洁,但需要注意的是,Lambda 函数在语法上有一些限制,如果需要更复杂的逻辑,还需要使用普通函数。
来源:https://www.zadmei.com/rhzpzsyd.html


猜你喜欢
- MySql 8.0 对应驱动包匹配MySql 数据库更新为8.0及以上后,对应的应用程序数据库链接驱动包也要更新为8.0版本。否则会报驱动异
- 最近入了一块树莓派,想让其实现摄像头的调用,因此写下此博客备忘一、树莓派网络的配置首先,对树莓派进行网络配置,否则就无法进行软件的安装我们知
- 注:对多选按钮操作。 1:批量全选添加、批量移除。 2:行单选添加、移除。 3:分页之后(全选或不选)状态标识依然存在 /* *****&g
- 一、多线程共享全局变量首先我们来回忆下在函数中修改全局变量的情况。在一个函数中,对全局变量进行修改的时候,到底是否需要使用 global 进
- 本文实例讲述了Python实现螺旋矩阵的填充算法。分享给大家供大家参考,具体如下:afanty的分析:关于矩阵(二维数组)填充问题自己动手推
- 如下所示:#coding=gbk'''GPU上面的环境变化太复杂,这里我直接给出在笔记本CPU上面的运行时间结果由于
- 引言django提供了一个默认的auth系统用于用户的登录和授权,并提供了一定的扩展性,允许开发者自行定义多个验证后台,每个验证后台必须实现
- 本文研究的主要是Django开发中的signal 的相关内容,具体如下。前言在web开发中, 你可能会遇到下面这种场景:在用户完成某个操作后
- Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的?
- mysq 正确清理binlog日志前言:MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是
- 此命令作用,修改数据表ff_vod,在vod_url字段内容后加入999999999。update ff_vod set vod_url=C
- if rs.bof then 表示:当前指针的位置是在第一行记录之前 if rs.eof then 表示:当前指针的位置是在最后一行记录之后
- MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由
- 在MySQL 5.6.6之前,TIMESTAMP的默认行为:■TIMESTAMP列如果没有明确声明NULL属性,默认为NOT NULL。(而
- 本文实例讲述了Python切片操作。分享给大家供大家参考,具体如下:我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索
- AJAX:Asynchronous JavaScript And XML--------异步JavaScript和XML
- 很久以前就知道微软的Petshop的很经典,昨天抽出时间去学习,一开始还真的不适应,什么成员资格,还真的看不太懂,运行petshop想从登陆
- python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样。一:如何理解?我们可能的理解:
- 首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet#!/usr/bin/en
- 很多时候,我们服务器的性能瓶颈会是在查询数据库的时候,所以对数据库的缓存非常重要,那么有没有一种方法,可以实现SQL SERVER数据库的缓