电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python中使用Lambda函數的5種用法

瀏覽:103日期:2022-06-23 15:17:57
引言

Lambda 函數(也稱為匿名函數)是函數式編程中的核心概念之一。

支持多編程范例的 Python 也提供了一種簡單的方法來定義 lambda 函數。

用 Python 編寫 lambda 函數的模板是:

lambda arguments : expression

它包括三個部分:

· Lambda 關鍵字

· 函數將接收的參數

· 結果為函數返回值的表達式

由于它的簡單性,lambda 函數可以使我們的 Python 代碼在某些使用場景中更加優雅。這篇文章將演示在 Python 中 lambda 函數的5個常見用法,并用有趣的例子來解釋它們。

1.命名使用

如果我們只需要一個簡單的函數,lambda 是一個很好的選擇,因為它可以被看作是定義函數的一種更簡單的方法。因此,我們可以給它一個名稱,并像普通函數一樣使用它。

lambda_add_ten = lambda x: x + 10print(lambda_add_ten(5))# 15 def add_ten(x): return x + 10print(add_ten(5))# 15

如上面的例子所示,add_ten() 和 lambda_add_ten() 方法的結果是相同的,但是 lambda 函數可以使我們的代碼更短更清晰。

2. 與高階函數配合

如果我們可以將 lambda 函數與 map()、 filter()和 reduce()等高階函數一起使用,那么程序將變得更加優雅。

讓我們來看下面這個問題:

給你一個列表如下,你能打印其中所有的奇數嗎?

numbers = [1, 12, 37, 43, 51, 62, 83, 43, 90, 2020]

這個問題看起來很簡單,但它足以區分初級和高級 Python 開發人員。

初級程序員可能會編寫如下代碼:

odd_number = []for n in numbers: if n % 2 == 1: odd_number.append(n)print(odd_number)# [1, 37, 43, 51, 83, 43]

它工作正常,沒有任何問題。然而,一個高級 Python 程序員只需要一行代碼就可以做同樣的事情:

print(list(filter(lambda x: x % 2 == 1, numbers)))# [1, 37, 43, 51, 83, 43]

它看起來更優雅,不是嗎?

順便說一下,上面的一行解決方案只是為了展示如何使用 lambda 函數。當然還有其他的單行解決方案,比如列表解析:

odd_numbers = [i for i in numbers if i % 2 == 1]

實際上,在許多情況下,列表內涵函數可能比高階函數與 lambda 函數協作更具可讀性。

3.賦予“key”參數

一些內置方法具有關鍵的參數,這些參數給我們提供了更多的靈活性。

例如,當我們使用 sorted()或 sort()方法對 Python 中的迭代進行排序時,關鍵參數決定如何比較迭代中的兩個元素。

這里也是 lambda 函數的表演時間。

leaders = ['Warren Buffett', 'Yang Zhou', 'Tim Cook', 'Elon Musk']print(leaders)# [’Warren Buffett’, ’Yang Zhou’, ’Tim Cook’, ’Elon Musk’]leaders.sort(key=lambda x: len(x))print(leaders)# [’Tim Cook’, ’Yang Zhou’, ’Elon Musk’, ’Warren Buffett’]

如上所述,如果我們按照每個名稱的長度對 leaders 列表進行排序,一個簡單的方法是向 key 參數傳遞一個 lambda 函數。

另一個常見的使用場景是根據字典的鍵或值對其進行排序。

leaders = {4: 'Yang Zhou', 2: 'Elon Musk', 3: 'Tim Cook', 1: 'Warren Buffett'}print(leaders)# {4: ’Yang Zhou’, 2: ’Elon Musk’, 3: ’Tim Cook’, 1: ’Warren Buffett’}leaders = dict(sorted(leaders.items(), key=lambda x: x[0]))print(leaders)# {1: ’Warren Buffett’, 2: ’Elon Musk’, 3: ’Tim Cook’, 4: ’Yang Zhou’}4.立即調用

立即調用的函數表達式(IIFE)是 JavaScript 中的一種習慣用法。Python 中的 lambda 函數也支持這個技巧。我們可以立即運行一個 lambda 函數,如下所示:

>>> (lambda x,y:x*y)(2,3)6

但是,出于可讀性和可維護性的考慮,最好只在 Python 的交互式解釋器中使用這個技巧。

順便說一句,如果你熟悉Python中的下劃線技巧,則也可以使用以下方式。

>>> lambda x,y:x*y<function <lambda> at 0x7fc319102d30>>>> _(2,3)65.在閉包中使用

閉包是一個功能強大的函數式編程特性,在 Python 中也可以使用。因為它是關于嵌套函數的,所以我們可以使用 lambda 函數來使程序更加清晰。

下面是使用閉包的一個例子:

def outer_func(): leader = 'Yang Zhou' def print_leader(location=''): return leader + ' in the ' + location return print_leader Lead = outer_func()('UK')print(Lead)# Yang Zhou in the UK

我們該如何使用 lambda 函數來簡化上面的代碼?

def outer_func(): leader = 'Yang Zhou' return lambda location='': leader + ' in the ' + location Lead = outer_func()('UK')print(Lead)# Yang Zhou in the UK

正如上面的例子所示,當我們使用嵌套函數時,lambda 函數可以幫助我們編寫更易讀和清晰的代碼。

總結

Python 中的 lambda 函數為我們提供了更多的靈活性和方法設計選項??傊?,我們應該熟悉以上五種常見用法,以便正確使用,而不是過度使用。

到此這篇關于Python中使用Lambda函數的5種用法的文章就介紹到這了,更多相關python使用Lambda函數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 深圳市东信高科自动化设备有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 步入式高低温测试箱|海向仪器| 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 桐城新闻网—桐城市融媒体中心主办 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 |