Python的一个懒加载序列类型
项目描述
lazyseq 是一个简单的库,实现了一个名为 LazySeq 的类,它提供了一种可以像不可变列表一样使用的懒加载序列。您可以将其视为Clojure的 Seq 的Python版本。 LazySeq 的主要用途是包装生成器或 生成器表达式 以使其持久化,但仍然是懒加载的。
LazySeq 实现了Python的序列接口,因此具有 __getitem__、__len__、__contains__、__iter__、__reversed__、index 和 count 等方法。
从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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b97c3ba0409bce295963aceedb75b4f98021d65227c37f181b841e405b6903f |
|
MD5 | be39fad9f64110869cc7e071ee484d6a |
|
BLAKE2b-256 | 286806f8d1dfb10c8ebde82cda785b337efe4b3b103d4e1855de98a1a55a2d92 |