iterpy
项目描述
iterpy
Python已将map
、filter
等实现为函数,而不是序列上的方法。这使得结果难以阅读,迭代器比它们应有的使用得少。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
💬 哪里可以提问
类型 | |
---|---|
🚨 错误报告 | GitHub 问题追踪器 |
🎁 功能请求与想法 | GitHub 问题追踪器 |
👩💻 使用问题 | GitHub 讨论区 |
🗯 一般讨论 | GitHub 讨论区 |
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
iterpy-1.9.0.tar.gz (36.8 kB 查看哈希值)
构建分布
iterpy-1.9.0-py3-none-any.whl (12.3 kB 查看哈希值)
关闭
iterpy-1.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8bcbc2f8939072d02dc482cebda093591263e2b07d600364e61ad49ffc1b745b |
|
MD5 | bdbe3313277a847272adb090777005b8 |
|
BLAKE2b-256 | dc792434963d4143ba21cef68e5be85f36ef02bb6abf02cfb4fdbec5cdca8d61 |
关闭
iterpy-1.9.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34cc1e7bb2ef9caf4ee0f508271ae09d747572a3a4a2f448a0ff507444b54e4d |
|
MD5 | 9baad8a3d26247bec1899fac7a86f7b2 |
|
BLAKE2b-256 | 97079dd389d1e3840bbc7fc2a15a421355def4906166c51a69cb7d2144af19c1 |