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

您的位置:首頁技術(shù)文章
文章詳情頁

Python 中Operator模塊的使用

瀏覽:3日期:2022-06-28 16:54:00

Python 中的 Operator 模塊可以讓它支持函數(shù)式編程。

1 計算函數(shù)

假設(shè)我們需要一個計算階乘的函數(shù),一般做法是使用遞歸。如果使用函數(shù)式編程,可以有兩種方式,一種 lambda,另一種使用 Operator 模塊中的算術(shù)函數(shù)。我們做個比較。

首先使用 lambda 方式來實現(xiàn):

from functools import reducedef fact(n): return reduce(lambda a, b: a * b, range(1, n + 1))

這里用到了 reduce 方法,reduce() 函數(shù)語法:reduce(function, iterable[, initializer])。其中的 function 函數(shù)有兩個參數(shù)。reduce() 函數(shù)會先對集合中的第 1、2 個元素進(jìn)行 function 函數(shù)處理,得到的結(jié)果再與第三個元素進(jìn)行 function 函數(shù)處理,最后得到一個結(jié)果1。

reduce() 函數(shù)中的 function 使用 lambda 表達(dá)式。第二個入?yún)?iterable 使用 range() 方法來生成。

接著使用 Operator 模塊中的 mul 函數(shù)來實現(xiàn)階乘:

from operator import muldef factWithMul(n): return reduce(mul, range(1, n + 1))

相對來說,使用 Operator 模塊中的計算函數(shù),代碼更加簡潔。

從源碼上分析,mul 函數(shù)就是計算兩個入?yún)⒌某朔e:

def mul(a, b): 'Same as a * b.' return a * b

Operator 模塊內(nèi)部還定義了很多類似的計算函數(shù),比如:

Python 中Operator模塊的使用

2 過濾函數(shù)

operator 模塊中還有一類函數(shù)能夠起到條件過濾的作用。

首先介紹 itemgetter 函數(shù)。假設(shè)定義了一個 f 函數(shù),f = itemgetter(2),那么如果調(diào)用 f(r),實際會返回 r[2]。也就是說,傳入的入?yún)?r,最終返回的只是 r 的索引值為 2 (從 1 開始計算)那一部分。

itemgetter 函數(shù)應(yīng)用場景是:根據(jù)元組的某個字段對元組列表進(jìn)行排序。比如我們有一段 JSON 格式的城市數(shù)據(jù),需要對其簡稱進(jìn)行排序:

from operator import itemgettermetro_areas = [(’Tokyo’, ’JP’, 36.933, (35.689722, 139.691667)), (’Delhi NCR’, ’IN’, 21.935, (28.613889, 77.208889)),(’Mexico City’, ’MX’, 20.142, (19.433333, -99.133333)),(’New York-Newark’, ’US’, 20.104, (40.808611, -74.020386)),(’Sao Paulo’, ’BR’, 19.649, (-23.547778, -46.635833)),]for city in sorted(metro_areas, key=itemgetter(1)): logging.info(’city -> %s’, city)

運(yùn)行結(jié)果:

INFO - city -> (’Sao Paulo’, ’BR’, 19.649, (-23.547778, -46.635833))INFO - city -> (’Delhi NCR’, ’IN’, 21.935, (28.613889, 77.208889))INFO - city -> (’Tokyo’, ’JP’, 36.933, (35.689722, 139.691667))INFO - city -> (’Mexico City’, ’MX’, 20.142, (19.433333, -99.133333))INFO - city -> (’New York-Newark’, ’US’, 20.104, (40.808611, -74.020386))

城市數(shù)據(jù)數(shù)組中的每一個元素,拆分來看,就是元組形式。 itemgetter 函數(shù)取出元組的第二個值作為 sorted 函數(shù)的排序依據(jù)。

如果傳入 itemgetter 的入?yún)⒉恢挂粋€,那么它就是一個過濾函數(shù),只把需要的列過濾出來。

比如我們只需要城市數(shù)組中的城市簡稱與所在坐標(biāo),就可以這么做:

cc_name = itemgetter(1, 3)for city in metro_areas:logging.info(’city -> %s’, cc_name(city))

運(yùn)行結(jié)果:

INFO - city -> (’JP’, (35.689722, 139.691667))INFO - city -> (’IN’, (28.613889, 77.208889))INFO - city -> (’MX’, (19.433333, -99.133333))INFO - city -> (’US’, (40.808611, -74.020386))INFO - city -> (’BR’, (-23.547778, -46.635833))

以上就是Python 中Operator模塊的使用的詳細(xì)內(nèi)容,更多關(guān)于Python 中Operator模塊的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 事迹材料_个人事迹名人励志故事| ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 汝成内控-行政事业单位内部控制管理服务商 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 科普仪器菏泽市教育教学仪器总厂 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 精密模具加工制造 - 富东懿| 高温高压釜(氢化反应釜)百科| 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 |