百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python:Lambda 函数的 7 种应用

itomcoil 2025-03-04 12:44 8 浏览

sort函数

sort()方法是与列表一起使用的方法,使用lambda 函数为其元素定义自定义排序机制。该方法有一个key带有函数的可选参数。可以使用lambda来更改该列表元素的排序方式,而不是定义函数。li = [23, 56, 89, 32, 12]


li.sort(key=lambda x: str(x)[1])
print(li)

如果没有关键参数,[12, 23, 32, 56, 89]将是最终输出。但是看看上面编写的程序的输出。

输出:

[32、12、23、56、89]

在这里,仅根据元素的第二位数字而不是整数对元素进行排序。同样,可以使用任何自定义逻辑对值进行排序。

max函数

内置函数max()用于从值集合中查找最大值。

此函数还包含一个可选key参数,该参数可以采用lambda 函数来确定如何找到最大值。

li = [1, 0, -1, 2, -3] 
print(max(li, key=lambda x: abs(x)))

从逻辑上讲,列表值中的最大值将为2。但是,使用了key参数并传递了lambda来在避免负号后找到最大值。

所以这段代码的输出将是-3。

-3

这就是在函数中使用lambda 的max()方式。

min函数

与该函数类似max()min() 内置函数也使用key参数和 lambda 函数来自定义如何在值集合中选择最小值。

在此示例中,做一个小更改,要求lambda 函数返回每个带负号的值。

li = [1, 2, 3, 4, 5] 
print(min(li, key=lambda x: -x))

在这里,已将每个值更改为负值。通常,最小值为1,但现在为5,因为-5是负值中的最小值。

输出:

5

min()函数使用相同的概念max(),但用于选择最小值。

filter函数

该类filter()用于根据给定的函数从值集合中过滤值。它返回一个过滤器对象,需要在打印值之前将其转换为所需的数据类型。

可以使用lambda 函数来过滤值,而不是提供预定义的函数。

为给定函数返回的 所有元素都将被保留。任何返回的True东西都会被忽略。这是一个简单的例子。 False

li = ['bat', 'tip', 'cat', 'pet'] 
fr = filter(lambda x: x[1] == 'a', li) 
print(list(fr))

在这里,检查了每个值的第二个字符是否具有‘a’. 任何不满足此条件的元素都会被拒绝。

因此输出将只有batcat作为过滤值。

[‘bat’、‘cat']

此处使用lambda函数作为必须如何过滤元素的决定器。

map函数

该类map()用于将函数应用于值集合中的每个元素。

示例包括将大写字符串转换为小写,以及将字符串值转换为整数。还有其他有用的应用程序。它返回一个映射对象,然后可以将其转换为任何所需的集合数据类型。

对于需要应用于每个元素的任何更改,可以将该函数替换为lambda 函数。例如,您可以找到每个数字的立方值并将其作为最终结果返回。

这是代码。

li = [4, 8, 3, 2, 9] 
mp = map(lambda x: x ** 3, li) 
print(list(mp))

输出:

[64、512、27、8、729]

可以使用类和lambda函数将任何常见的单表达式逻辑应用于每个元素。map()

reduce函数

reduce()函数是模块的一部分functools,用于从值集合中生成最终的单个值。最终值是使用函数内部传递的函数确定的reduce()

例如,对于一个值列表,您以累积应用乘法运算,最终得到所有值相乘的结果。在这里,可以使用lambda来代替直接函数。

from functools import reduce 

li = [5, 7, 3, 4, 6] 
re = reduce(lambda x, y: x * y, li) 
print(re)

reduce()函数中,始终使用两个参数。一个用于第一个值,另一个用于第二个值。这里57相乘。现在,结果35x再次传递给参数,第三个值3传递给参数y

这种情况会一直发生,直到列表中没有元素为止,并且最终结果存储在变量 re中。

输出:

2520

这就是我们在reduce()函数中使用 lambda 的方式。

sorted函数

内置sorted()函数与方法类似sort(),但是,它对所有集合类型都是通用的,而不仅仅是列表。它们用于对值集合进行排序。

此函数还有一个可选key参数,您可以在其中使用 lambda 函数来更改该列表元素的排序方式。

下面是一个示例,其中列表中的数字根据每个数字的反转进行排序。

li = [59, 38, 81, 66, 43] 
so = 排序(li, key=lambda x: str(x)[::-1]) 
print(so)

输出将是,

[81、43、66、38、59]

这就是该sorted()函数与lambda一起使用的方式,以根据自定义条件对值进行排序。

相关推荐

Java 如何从一个 List 中随机获得元素

概述从一个List中随机获得一个元素是有关List的一个基本操作,但是这个操作又没有非常明显的实现。本页面主要向你展示如何有效的从List中获得一个随机的元素和可以使用的一些方法。选择一个...

想月薪过万吗?计算机安卓开发之"集合"

集合的总结:/***Collection*List(存取有序,有索引,可以重复)*ArrayList*底层是数组实现的,线程不安全,查找和修改快,增和删比较慢*LinkedList*底层是...

China Narrows AI Talent Gap With U.S. as Research Enters Engineering Phase: Report

ImagegeneratedbyAITMTPOST--ChinaisclosinginontheU.S.intheAIindustry-academia-research...

大促系统优化之应用启动速度优化实践

作者:京东零售宋维飞一、前言本文记录了在大促前针对SpringBoot应用启动速度过慢而采取的优化方案,主要介绍了如何定位启动速度慢的阻塞点,以及如何解决这些问题。希望可以帮助大家了解如何定位该类问...

MyEMS开源能源管理系统核心代码解读004

本期解读:计量表能耗数据规范化算法:myems/myems-normalization/meter.py代码见底部这段代码是一个用于计算和存储能源计量数据(如电表读数)的小时值的Python脚本。它主...

Java接口与抽象类:核心区别、使用场景与最佳实践

Java接口与抽象类:核心区别、使用场景与最佳实践一、核心特性对比1.语法定义接口:interface关键字定义,支持extends多继承接口javapublicinterfaceDrawabl...

超好看 vue2.x 音频播放器组件Vue-APlayer

上篇文章给大家分享了视频播放器组件vue-aliplayer,这次给大家推荐一款音频插件VueAplayer。vue-aplayer一个好看又好用的轻量级vue.js音乐播放器组件。清爽漂亮的U...

Linq 下的扩展方法太少了,MoreLinq 来啦

一:背景1.讲故事前几天看同事在用linq给内存中的两个model做左连接,用过的朋友都知道,你一定少不了一个叫做DefaultIfEmpty函数,这玩意吧,本来很流畅的from......

MapReduce过程详解及其性能优化(详细)

从JVM的角度看Map和ReduceMap阶段包括:第一读数据:从HDFS读取数据1、问题:读取数据产生多少个Mapper??Mapper数据过大的话,会产生大量的小文件,由于Mapper是基于虚拟...

手把手教你使用scrapy框架来爬取北京新发地价格行情(实战篇)

来源:Python爬虫与数据挖掘作者:霖hero前言关于Scrapy理论的知识,可以参考我的上一篇文章,这里不再赘述,直接上干货。实战演练爬取分析首先我们进入北京新发地价格行情网页并打开开发者工具,如...

屏蔽疯狂蜘蛛,防止CPU占用100%(mumu模拟器和雷电模拟器哪个更占用cpu)

站点总是某个时间段莫名的cpu100%,资源占用也不高,这就有必要怀疑爬虫问题。1.使用"robots.txt"规范在网站根目录新建空白文件,命名为"robots.txt&#...

Web黑客近年神作Gospider:一款基于Go语言开发的Web爬虫,要收藏

小白看黑客技术文章,一定要点首小歌放松心情哈,我最爱盆栽!开始装逼!Gospider是一款运行速度非常快的Web爬虫程序,对于爱好白帽黑客的小白来说,可谓是佳作!Gospider采用厉害的Go语言开发...

用宝塔面板免费防火墙屏蔽织梦扫描网站

今天教大家在免费的基础上屏蔽织梦扫描,首先您要安装宝塔面板,然后再安装免费的防火墙插件,我用的是Nginx免费防火墙,然后打开这个插件。设置GET-URL过滤设置一条简单的宝塔面板的正则规则就可以屏蔽...

蜘蛛人再捞4千万美元 连续三周蝉联北美票房冠军

7月15日讯老马追踪票房数据的北美院线联盟今天表示,“蜘蛛人:离家日”(Spider-Man:FarFromHome)击退两部新片的挑战,连续第2周勇夺北美票房冠军,海捞4530万美元。法新...

夏天到了,需要提防扁虱,真是又小又恐怖的动物

夏天马上要到了,你知道吗,扁虱是这个夏天最危险的动物之一,很少有动物能比它还凶猛。Whenitcomestosummer'slittledangers,fewarenastiert...