python的延迟计算序列类型
lazyseq的Python项目详细描述
lazyseq是一个实现单个类LazySeq的简单库,它 提供一个可以像不可变列表一样使用的延迟计算序列。 你可以把它看作是克洛朱尔的一个Python版本 Seq。LazySeq的主要用途是 包装生成器或 generator expressions制作 他们执着,但仍然懒惰。
LazySeq实现了python的序列接口,因此具有 __getitem__,__len__,__contains__,__iter__,__reversed__, index,和count。
从lazyseq获取一个项目相当于从 作为列表提供。但是,只有 迭代(所有到最大请求元素的),以及所有 被求值的元素缓存在LazySeq中,因此可以对其进行迭代 再一次。注意,像len(seq)这样的一些操作将在必要时迭代 覆盖(从而缓存)整个iterable。
要使用lazyseq,只需在任何python iterable上调用LazySeq:
>>>fromlazyseqimportLazySeq>>>seq=LazySeq(x**2forxinrange(5))>>>seqLazySeq([...])>>>seq[:3][0,1,4]>>>seqLazySeq([0,1,4,...])>>>list(seq)[0,1,4,9,16]>>>seqLazySeq([0,1,4,9,16])