介绍
Sorted Containers是Apache2许可的Sorted Collections库,用纯Python编写,并且可以像C扩展一样快速。
Python的标准库已经非常实用了,实践已经证明,即使没有一个扩展,您也可以真正走得很远。但是,当您真正需要排序列表、排序字典或排序集合时,您将面临许多不同的实现,其中大多数使用C扩展,而且没有完善的文档和基准测试。
在Python中,我们可以做得更好。我们可以用纯Python做到这一点!
上面显示的所有操作都比线性时间快。上面的演示还占用了将近1 GB的内存。当排序列表乘以一千万时,它将存储对“ a”到“ e”中的每一个的一千万个引用。每个引用在已排序的容器中需要八个字节。这是很难克服的,因为这是指向每个对象的指针的代价。与每个节点还必须存储两个指向子节点的指针的典型二叉树实现(例如,Red-Black Tree, AVL-Tree, AA-Tree, Splay-Tree, Treap等)相比,开销也减少了66%。
Sorted Containers将所有工作从Python分类集合中剔除-简化了Python的部署和使用。无需安装C编译器或预先构建和分发自定义扩展。性能是一项功能,测试具有100%的单元测试覆盖率和数小时的压力。
特点
- 纯Python
完善的文档
基准比较(替代方案,运行时,负载因子)
100%的测试覆盖率
压力测试时间
性能很重要(通常比C实现更快)
兼容的API(几乎与旧的blist和bintrees模块相同)
功能丰富(例如,按排序的字典获取五个最大的键:d.keys()[-5:])
实用的设计(例如SortedSet是具有SortedList索引的Python集)
在Python 3.7上开发
在CPython 2.7、3.2、3.3、3.4、3.5、3.6、3.7和PyPy,PyPy3上测试
快速开始
通过pip快速安装Sorted Containers:
$ pip install sortedcontainers
您也可以下载我们备份的网盘版库文件包:
文档资料
有关sortedcontainers的完整文档,请访问 www.grantjenks.com/docs/sortedcontainers