最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 中Operator模塊的使用

 更新時間:2021年01月30日 15:46:59   作者:deniro  
這篇文章主要介紹了Python 中Operator模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

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

1 計算函數(shù)

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

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

from functools import reduce
def 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 個元素進行 function 函數(shù)處理,得到的結(jié)果再與第三個元素進行 function 函數(shù)處理,最后得到一個結(jié)果1。

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

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

from operator import mul
def 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ù),比如:

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ù)元組的某個字段對元組列表進行排序。比如我們有一段 JSON 格式的城市數(shù)據(jù),需要對其簡稱進行排序:

from operator import itemgetter

metro_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ù)組中的城市簡稱與所在坐標,就可以這么做:

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模塊的使用的詳細內(nèi)容,更多關(guān)于Python 中Operator模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?NumPy教程之?dāng)?shù)據(jù)類型對象詳解

    Python?NumPy教程之?dāng)?shù)據(jù)類型對象詳解

    每個?ndarray?都有一個關(guān)聯(lián)的數(shù)據(jù)類型?(dtype)?對象。這個數(shù)據(jù)類型對象(dtype)告訴我們數(shù)組的布局。本文將通過示例詳細講講NumPy的數(shù)據(jù)類型對象,需要的可以參考一下
    2022-08-08
  • Python實現(xiàn)圖片拼接的代碼

    Python實現(xiàn)圖片拼接的代碼

    本文通過實例代碼給大家介紹了python實現(xiàn)圖片拼接的方法,非常不錯,具有一定的參考借鑒借鑒價值,需要的朋友參考下吧
    2018-07-07
  • Python 高級變量之字典和字符串詳解

    Python 高級變量之字典和字符串詳解

    這篇文章主要為大家介紹了Python 字典和字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python中Tkinter組件Menu的具體使用

    Python中Tkinter組件Menu的具體使用

    本文主要介紹了Python中Tkinter組件Menu的具體使用,Menu組件用于實現(xiàn)頂級菜單、下拉菜單和彈出菜單,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python基于?Web?實現(xiàn)?m3u8?視頻播放的實例

    python基于?Web?實現(xiàn)?m3u8?視頻播放的實例

    這篇文章主要介紹了python基于?Web?實現(xiàn)?m3u8?視頻播放的實例的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Python實現(xiàn)機器學(xué)習(xí)算法的分類

    Python實現(xiàn)機器學(xué)習(xí)算法的分類

    今天給大家整理了Python實現(xiàn)機器學(xué)習(xí)算法的分類的文章,文中有非常詳細的代碼示例,對正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令

    python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令

    這篇文章主要介紹了python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • Django中的靜態(tài)文件管理過程解析

    Django中的靜態(tài)文件管理過程解析

    這篇文章主要介紹了Django中的靜態(tài)文件管理過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Django RBAC權(quán)限管理設(shè)計過程詳解

    Django RBAC權(quán)限管理設(shè)計過程詳解

    這篇文章主要介紹了Django RBAC權(quán)限管理設(shè)計過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Jupyter Notebook內(nèi)使用argparse報錯的解決方案

    Jupyter Notebook內(nèi)使用argparse報錯的解決方案

    這篇文章主要介紹了在Jupyter Notebook內(nèi)使用argparse報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

武乡县| 依安县| 博客| 长子县| 和政县| 罗定市| 拜城县| 中西区| 新昌县| 炉霍县| 呼和浩特市| 油尖旺区| 桦甸市| 田林县| 墨竹工卡县| 三明市| 沈丘县| 河东区| 清河县| 于田县| 乐平市| 怀来县| 梅州市| 阜宁县| 元江| 广安市| 明溪县| 隆德县| 磐石市| 蕲春县| 河北区| 本溪市| 台北县| 南宫市| 三门县| 平乐县| 和政县| 靖远县| 广德县| 南郑县| 宽城|