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

使用Python的toolz庫開始函數(shù)式編程的方法

 更新時間:2018年11月15日 14:03:37   作者:佚名  
這篇文章主要介紹了使用Python的toolz庫開始函數(shù)式編程的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

在這個由兩部分組成的系列文章的第二部分中,我們將繼續(xù)探索如何將函數(shù)式編程方法中的好想法引入到 Python中,以實現(xiàn)兩全其美。

在上一篇文章中,我們介紹了不可變數(shù)據(jù)結構 。 這些數(shù)據(jù)結構使得我們可以編寫“純”函數(shù),或者說是沒有副作用的函數(shù),僅僅接受一些參數(shù)并返回結果,同時保持良好的性能。

在這篇文章中,我們使用 toolz 庫來構建。 這個庫具有操作此類函數(shù)的函數(shù),并且它們在純函數(shù)中表現(xiàn)得特別好。 在函數(shù)式編程世界中,它們通常被稱為“高階函數(shù)”,因為它們將函數(shù)作為參數(shù),將函數(shù)作為結果返回。

讓我們從這里開始:

def add_one_word(words,word):
 return words.set(words.get(word, 0) + 1)

這個函數(shù)假設它的第一個參數(shù)是一個不可變的類似字典的對象,它返回一個新的類似字典的在相關位置遞增的對象:這就是一個簡單的頻率計數(shù)器。

但是,只有將它應用于單詞流并做 歸納 時才有用。 我們可以使用內置模塊 functools 中的歸納器。

functools.reduce(function,stream,initializer)

我們想要一個函數(shù),應用于流,并且能能返回頻率計數(shù)。

我們首先使用 toolz.curry 函數(shù):

add_all_words=curry(functools.reduce,add_one_word)

使用此版本,我們需要提供初始化程序。但是,我們不能只將 pyrsistent.m 函數(shù)添加到 curry 函數(shù)中; 因為這個順序是錯誤的。

add_all_words_flipped=flip(add_all_words)

flip 這個高階函數(shù)返回一個調用原始函數(shù)的函數(shù),并且翻轉參數(shù)順序。

get_all_words=add_all_words_flipped(pyrsistent.m())

我們利用 flip 自動調整其參數(shù)的特性給它一個初始值:一個空字典。

現(xiàn)在我們可以執(zhí)行 get_all_words(word_stream) 這個函數(shù)來獲取頻率字典。 但是,我們如何獲得一個單詞流呢? Python 文件是按行供流的。

def to_words(lines):
 for line in lines:
  yield from line.split()

在單獨測試每個函數(shù)后,我們可以將它們組合在一起:

words_from_file=toolz.compose(get_all_words,to_words)

在這種情況下,組合只是使兩個函數(shù)很容易閱讀:首先將文件的行流應用于 to_words ,然后將 get_all_words 應用于 to_words 的結果。 但是文字上讀起來似乎與代碼執(zhí)行相反。

當我們開始認真對待可組合性時,這很重要。有時可以將代碼編寫為一個單元序列,單獨測試每個單元,最后將它們全部組合。如果有幾個組合元素時,組合的順序可能就很難理解。

toolz 庫借用了 Unix 命令行的做法,并使用 pipe 作為執(zhí)行相同操作的函數(shù),但順序相反。

words_from_file=toolz.pipe(to_words,get_all_words)

現(xiàn)在讀起來更直觀了:將輸入傳遞到 to_words ,并將結果傳遞給 get_all_words 。 在命令行上,等效寫法如下所示:

$cat files|to_words|get_all_words

toolz 庫允許我們操作函數(shù),切片、分割和組合,以使我們的代碼更容易理解和測試。

總結

以上所述是小編給大家介紹的使用Python的toolz庫開始函數(shù)式編程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • python leetcode 字符串相乘實例詳解

    python leetcode 字符串相乘實例詳解

    這篇文章主要介紹了python leetcode 字符串相乘的示例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • python中@staticmethod方法的使用

    python中@staticmethod方法的使用

    這篇文章主要介紹了python中@staticmethod方法的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • mac下pip、conda、homebrew修改為清華鏡像源的方法

    mac下pip、conda、homebrew修改為清華鏡像源的方法

    本文主要介紹了mac下pip、conda、homebrew修改為清華鏡像源的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python常用數(shù)據(jù)類型之間的轉換總結

    Python常用數(shù)據(jù)類型之間的轉換總結

    在本篇文章里小編給大家整理的是關于Python中常用數(shù)據(jù)類型之間的轉換相關知識點,有需要的朋友們可以學習下
    2019-09-09
  • Python?字符替換的四方法

    Python?字符替換的四方法

    本文主要介紹了Python?字符替換的四方法,主要包括replace、translate、maketrans?和正則這是四種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 三分鐘熟練使用Python的os.path.join()

    三分鐘熟練使用Python的os.path.join()

    在Python中os.path.join()函數(shù)用于將多個路徑組合成一個路徑,下面這篇文章主要給大家介紹了關于熟練使用Python的os.path.join()的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • Python實現(xiàn)語音啟動電腦應用程序

    Python實現(xiàn)語音啟動電腦應用程序

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)語音啟動電腦應用程序功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一學習一下
    2025-03-03
  • python計算程序開始到程序結束的運行時間和程序運行的CPU時間

    python計算程序開始到程序結束的運行時間和程序運行的CPU時間

    這篇文章主要介紹了python計算程序開始到程序結束的運行時間和程序運行的CPU時間的三個方法,大家參考使用
    2013-11-11
  • 跟老齊學Python之開始真正編程

    跟老齊學Python之開始真正編程

    通過對四則運算的學習,已經(jīng)初步接觸了Python中內容,但是到目前為止,還不能算編程,只能算會用一些指令(或者叫做命令)來做點簡單的工作。列位稍安勿躁,下面我們就學習如何編寫一個真正的程序。
    2014-09-09
  • Python語言實現(xiàn)將圖片轉化為html頁面

    Python語言實現(xiàn)將圖片轉化為html頁面

    這篇文章主要介紹了Python實現(xiàn)將圖片轉化為html頁面,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12

最新評論

贡嘎县| 西平县| 江源县| 高雄市| 项城市| 通许县| 鄯善县| 萨迦县| 灵山县| 潮州市| 项城市| 宁陕县| 芦溪县| 东兴市| 阿拉善左旗| 界首市| 炎陵县| 峨边| 安阳市| 澳门| 台山市| 文登市| 正安县| 紫阳县| 永平县| 阳信县| 锦州市| 米易县| 灌阳县| 沙坪坝区| 自贡市| 南皮县| 万州区| 宣恩县| 蓝山县| 富阳市| 延庆县| 华蓥市| 和田市| 蛟河市| 舒兰市|