国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

Python 中Operator模塊的使用

瀏覽:2日期: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)

運行結(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))

運行結(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)文章:
主站蜘蛛池模板: 成人网18免费网站 | 国产精品91在线播放 | 国产一久久香蕉国产线看观看 | 日本三区视频 | 中文字幕一级 | 男人女人做黄刺激性视频免费 | 看真人视频a级毛片 | 国产精品黄在线观看免费软件 | 亚洲综合色就色手机在线观看 | 香蕉国产人午夜视频在线观看 | 亚洲精品中文字幕久久久久久 | 国产精品毛片在线更新 | 国产日韩欧美精品在线 | 亚洲精品欧洲久久婷婷99 | 九九99久久精品国产 | 国产精品久久在线观看 | 国产高清自拍一区 | 国产一区二区久久 | 美女被cao免费看在线看网站 | 国产成人一区免费观看 | 中文字幕在线成人免费看 | 久久99精品视免费看 | 欧美成人国产一区二区 | 久久久亚洲精品国产 | 成年片人免费www | 手机毛片在线观看 | 亚洲欧美日韩综合在线一区二区三区 | 高清欧美日本视频免费观看 | www.亚洲天堂网 | 国产情侣真实露脸在线最新 | 久久精品久久久 | 久久精品爱 | 免费看成人播放毛片 | 日韩三级中文字幕 | 国产欧美日韩亚洲精品区2345 | 国自产精品手机在线视频香蕉 | 美女被免费视频网站a国产 美女被免费网站视频软件 美女被免费网站在线软件 美女被免费网站在线视频软件 | 麻豆69堂免费视频 | 中文字幕日韩一区二区不卡 | 成人欧美一区二区三区视频xxx | 国产精品免费视频能看 |