跳转到主要内容

iterpy

项目描述

iterpy

Open in Dev Container PyPI Python Version Roadmap

Python已将mapfilter等实现为函数,而不是序列上的方法。这使得结果难以阅读,迭代器比它们应有的使用得少。iterpy旨在改变这一点。

你会得到这个 🔥

from iterpy import Iter

result = Iter([1,2,3]).map(multiply_by_2).filter(is_even)

而不是这个

sequence = [1,2,3]
multiplied = [multiply_by_2(x) for x in sequence]
result = [x for x in multiplied if is_even(x)]

或者这个

result = filter(is_even, map(multiply_by_2, [1,2,3]))

安装

pip install iterpy

用法

from iterpy import Iter

result = (Iter([1, 2])
            .filter(lambda x: x % 2 == 0)
            .map(lambda x: x * 2)
            .to_list()
)
assert result == [4]

先例

iterpy站在Scala、Rust等的基础上。

其他Python项目也有类似的想法

  • PyFunctional已存在7年以上,功能全面。它性能良好,内置了血缘和缓存。不幸的是,这使得类型化 变得复杂,并花费了4年以上的时间来添加类型
  • flupy高度相似,类型化良好,成熟。我遇到了一些问题,.flatten()没有被正确类型提示,但你的使用效果可能会有所不同。
  • 你的库在这里?如果有好的替代方案,请随时提出问题!

贡献

约定

哲学

  • 让它工作:借鉴自Scala、Rust等简洁的语法
  • 让它正确:完全类型化,无异常
  • 让它快速
    • 通过.pmap实现并发
    • (Future): 缓存
    • (Future): 将操作重构为使用生成器
  • 让它简单:无依赖

API设计

作为一个启发式方法,我们遵循以下API:

在与此冲突的情况下,API应该尽可能符合Python用户的预期。

Devcontainer

  1. 安装 Orbstack 或 Docker Desktop。在继续之前,请确保完成完整的安装过程。
  2. 如果没有安装,请安装 VSCode
  3. 点击这个 链接
  4. 完成设置过程
  5. 完成!就这么简单。

💬 哪里可以提问

类型
🚨 错误报告 GitHub 问题追踪器
🎁 功能请求与想法 GitHub 问题追踪器
👩‍💻 使用问题 GitHub 讨论区
🗯 一般讨论 GitHub 讨论区

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

iterpy-1.9.0.tar.gz (36.8 kB 查看哈希值)

上传时间

构建分布

iterpy-1.9.0-py3-none-any.whl (12.3 kB 查看哈希值)

上传时间 Python 3

由以下机构支持