如何用Python的toolz库实现长尾词的函数式编程处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1090个文字,预计阅读时间需要5分钟。
在这个由两部分组成的系列文章的第二部分中,我们将探讨如何将函数式编程中的美好思想引入Python,以实现两种绝美效果。在前一篇文中,我们介绍了不可变数据结构。
在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美。
在上一篇文章中,我们介绍了不可变数据结构 。 这些数据结构使得我们可以编写“纯”函数,或者说是没有副作用的函数,仅仅接受一些参数并返回结果,同时保持良好的性能。
在这篇文章中,我们使用 toolz 库来构建。 这个库具有操作此类函数的函数,并且它们在纯函数中表现得特别好。 在函数式编程世界中,它们通常被称为“高阶函数”,因为它们将函数作为参数,将函数作为结果返回。
让我们从这里开始:
def add_one_word(words,word):
return words.set(words.get(word, 0) + 1)
这个函数假设它的第一个参数是一个不可变的类似字典的对象,它返回一个新的类似字典的在相关位置递增的对象:这就是一个简单的频率计数器。
但是,只有将它应用于单词流并做 归纳 时才有用。 我们可以使用内置模块 functools 中的归纳器。
functools.reduce(function,stream,initializer)
我们想要一个函数,应用于流,并且能能返回频率计数。
我们首先使用 toolz.curry 函数:
add_all_words=curry(functools.reduce,add_one_word)
使用此版本,我们需要提供初始化程序。
本文共计1090个文字,预计阅读时间需要5分钟。
在这个由两部分组成的系列文章的第二部分中,我们将探讨如何将函数式编程中的美好思想引入Python,以实现两种绝美效果。在前一篇文中,我们介绍了不可变数据结构。
在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美。
在上一篇文章中,我们介绍了不可变数据结构 。 这些数据结构使得我们可以编写“纯”函数,或者说是没有副作用的函数,仅仅接受一些参数并返回结果,同时保持良好的性能。
在这篇文章中,我们使用 toolz 库来构建。 这个库具有操作此类函数的函数,并且它们在纯函数中表现得特别好。 在函数式编程世界中,它们通常被称为“高阶函数”,因为它们将函数作为参数,将函数作为结果返回。
让我们从这里开始:
def add_one_word(words,word):
return words.set(words.get(word, 0) + 1)
这个函数假设它的第一个参数是一个不可变的类似字典的对象,它返回一个新的类似字典的在相关位置递增的对象:这就是一个简单的频率计数器。
但是,只有将它应用于单词流并做 归纳 时才有用。 我们可以使用内置模块 functools 中的归纳器。
functools.reduce(function,stream,initializer)
我们想要一个函数,应用于流,并且能能返回频率计数。
我们首先使用 toolz.curry 函数:
add_all_words=curry(functools.reduce,add_one_word)
使用此版本,我们需要提供初始化程序。

