跳转到主要内容

Python的一个懒加载序列类型

项目描述

travis-ci build status

lazyseq 是一个简单的库,实现了一个名为 LazySeq 的类,它提供了一种可以像不可变列表一样使用的懒加载序列。您可以将其视为Clojure的 Seq 的Python版本。 LazySeq 的主要用途是包装生成器或 生成器表达式 以使其持久化,但仍然是懒加载的。

LazySeq 实现了Python的序列接口,因此具有 __getitem____len____contains____iter____reversed__indexcount 等方法。

从LazySeq获取项相当于从提供的可迭代对象作为列表获取项。然而,只评估了可迭代对象中必要的元素(所有那些最多请求的元素),并且所有评估过的元素都缓存在了 LazySeq 中,以便它可以再次迭代。请注意,某些操作如 len(seq) 必须迭代整个可迭代对象(并因此缓存)。

要使用LazySeq,只需对任何Python可迭代对象调用 LazySeq 即可

>>> from lazyseq import LazySeq
>>> seq = LazySeq(x ** 2 for x in range(5))
>>> seq
LazySeq([...])
>>> seq[:3]
[0, 1, 4]
>>> seq
LazySeq([0, 1, 4, ...])
>>> list(seq)
[0, 1, 4, 9, 16]
>>> seq
LazySeq([0, 1, 4, 9, 16])

项目详情


下载文件

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

源分发

lazyseq-0.1.1.tar.gz (2.5 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面