Toolz
|构建状态| |覆盖率状态| |版本状态|
一套用于迭代器、函数和字典的实用函数集。
查看 PyToolz 文档:https://toolz.readthedocs.io
许可证
新 BSD 许可。参见 许可证文件 <https://github.com/pytoolz/toolz/blob/master/LICENSE.txt>
__。
安装
toolz
可在 Python 包索引(PyPI)上获得:
::
pip install toolz
结构和渊源
toolz
分为三个部分实现:
|literal itertoolz|_,用于可迭代对象的操作。例如:groupby
、unique
、interpose
,
|literal functoolz|_,用于高阶函数。例如:memoize
、curry
、compose
,
|literal dicttoolz|_,用于字典操作。例如:assoc
、update-in
、merge
。
.. |literal itertoolz| replace:: itertoolz
.. _literal itertoolz: https://github.com/pytoolz/toolz/blob/master/toolz/itertoolz.py
.. |literal functoolz| replace:: functoolz
.. _literal functoolz: https://github.com/pytoolz/toolz/blob/master/toolz/functoolz.py
.. |literal dicttoolz| replace:: dicttoolz
.. _literal dicttoolz: https://github.com/pytoolz/toolz/blob/master/toolz/dicttoolz.py
这些函数源自函数式语言进行列表处理的传统。它们能很好地协同工作,完成常见的复杂任务。
阅读我们的 API 文档 <https://toolz.readthedocs.io/en/latest/api.html>
__ 了解更多详情。
示例
以下代码使用 toolz
中的组件构建了一个标准的词频统计函数:
.. code:: python
>>> def stem(word):
... """ 将词语还原为原始形式 """
... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"")
>>> from toolz import compose, frequencies
>>> from toolz.curried import map
>>> wordcount = compose(frequencies, map(stem), str.split)
>>> sentence = "This cat jumped over this other cat!"
>>> wordcount(sentence)
{'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1}
依赖
toolz
支持 Python 3.7+ 版本,使用通用代码库。
它是纯 Python 实现,除标准库外不需要其他依赖。
简而言之,它是一个轻量级依赖。
CyToolz
toolz
项目已在 Cython <http://cython.org>
__ 中重新实现。
cytoolz
项目是纯 Python 实现的直接替代品。
更多详情请参见 CyToolz GitHub 页面 <https://github.com/pytoolz/cytoolz/>
__。
另请参阅
Underscore.js <https://underscorejs.org/>
__:JavaScript 的类似库Enumerable <https://ruby-doc.org/core-2.0.0/Enumerable.html>
__:Ruby 的类似库Clojure <https://clojure.org/>
__:一种函数式编程语言,其标准库中有几个与toolz
对应的部分itertools <https://docs.python.org/2/library/itertools.html>
__:Python 标准库中的迭代器工具functools <https://docs.python.org/2/library/functools.html>
__:Python 标准库中的函数工具
欢迎贡献
toolz
旨在成为实用函数的储存库,特别是那些来自函数式编程和列表处理传统的函数。我们欢迎符合这一范围的贡献。
我们也努力保持 API 的精简,以便于管理 toolz
。理想的贡献应与现有函数有显著区别,并在其他几个函数式系统中有先例。
请查看我们的 问题页面 <https://github.com/pytoolz/toolz/issues>
__ 以获取贡献想法。
社区
查看我们的 邮件列表 <https://groups.google.com/forum/#!forum/pytoolz>
__。
我们很友好。
.. |构建状态| image:: https://github.com/pytoolz/toolz/actions/workflows/test.yml/badge.svg?branch=master :target: https://github.com/pytoolz/toolz/actions .. |覆盖率状态| image:: https://codecov.io/gh/pytoolz/toolz/graph/badge.svg?token=4ZFc9dwKqY :target: https://codecov.io/gh/pytoolz/toolz .. |版本状态| image:: https://badge.fury.io/py/toolz.svg :target: https://badge.fury.io/py/toolz