迭代工具。但很挑剔。即使是在python 2上。
picklable-itertools的Python项目详细描述
可选择工具
在python中重新实现python标准库的itertools, 使用pickable迭代器对象。打算是Python2.7和3.4+ 兼容的。还包括pickable、python{2、3}兼容的实现 一些相关的实用程序,包括Toolz库中的一些函数, 在picklable_itertools.extras中。
为什么?
哲学
- 这应该是一个替换项非常不言自明。测试 针对标准库itertools或内置实现 验证行为匹配。其中Python2和Python3的不同之处在于 命名,(filterfalsevsifilterfalse,zip_longestvs.izip_longest) 我们两者都提供。我们还提供了仅在 Python 2的itertools(ifilter,izip)化身也可用 在python 3的内置名称下(filter,zip),方便使用。 当新对象被添加到python 3itertools模块时,我们打算 要添加它们(accumulate,例如,只在python 3中出现,并且 pickle实现包含在这个包中。)
- 尽可能优雅地处理内置类型。列表迭代器等。 在Python2.x上不可选择,因此我们提供了另一种选择 实施。文件迭代器也被透明地处理。迪克特 迭代器和集合迭代器当前不支持。 picklable_itertools.xrange可以用作 python 2xrange/python 3range,其好处是迭代器 由它生成的将可在Python2和3上选择
- 过早的优化是万恶之源这些东西是 在python中实现,所以速度显然不是我们主要关心的问题。几个 更高级的迭代器是通过链接更简单的迭代器来构造的 一起,这不是最有效的方法,但可以简化 编码很多。如果发现速度(或较浅的对象图)是 必要或可取的,这些都可以重新实现。拉动请求 对此,我们表示欢迎。