跳至主要内容

基于C的扩展,实现快速整数位集合。

项目描述

https://img.shields.io/github/tag/inveniosoftware/intbitset.svg https://img.shields.io/pypi/dm/intbitset.svg https://img.shields.io/github/license/inveniosoftware/intbitset.svg

安装

intbitset 在 PyPI 上

pip install intbitset

我们为最常见的操作系统和常见的 64 位 CPU 架构提供预构建的 wheel 包。否则,如果您从源代码构建,则需要 C 编译器。

文档

intbitset 库提供了一个集合实现,用于存储排序的无符号整数,可以是 32 位整数(介于 02**31 - 1intbitset.__maxelem__)或具有快速集合操作的无穷范围,这些操作通过在 Python C 扩展 中使用位向量实现,以提高速度并减少内存使用。

inbitset 类模拟了 Python 内置的 set 类接口,并具有一些附加的特定方法,例如其自己的快速存档和加载序列化函数。

>>> from intbitset import intbitset
>>> x = intbitset([1,2,3])
>>> y = intbitset([3,4,5])
>>> x & y
intbitset([3])
>>> x | y
intbitset([1, 2, 3, 4, 5])

此外,intbitset 支持

  • pickle 协议

  • 迭代器协议

  • intbitset 可以像序列一样被切片。

  • 自然的最小值和最大值。因为整数始终按顺序存储,所以非空集合的第一个元素 [0] 也是 min() 整数,最后一个元素 [-1] 也是集合中的 max() 整数。

与标准库中的 set 类相比,intbitset 集合操作以及 intbitset 的交集、并集和差集操作,对于密集整数集合来说,可以比标准库中的 set 快 5000 倍。

完整的文档可在 <http://intbitset.readthedocs.io> 找到,或使用 Sphinx 构建。

pip install sphinx
python setup.py build_sphinx

测试

运行测试非常简单

pip install -e .[tests]
pytest

在多个 Python 版本上运行测试

pip install tox
tox

开发

要使用 Cython 重新生成 C 代码

pip install cython
cython intbitset/intbitset.pyx

然后提交重新生成的 C 源代码并更新 CHANGELOG.rst

许可证

版权 (C) CERN 及他人

SPDX-License-Identifier: LGPL-3.0-or-later

intbitset 是免费软件;您可以在自由软件基金会发布的 GNU 较小通用公共许可证的条款下重新分发它和/或修改它;许可证的第 3 版,或者(根据您的选择)任何更新的版本。

intbitset 的分发是希望它会很有用,但没有提供任何保证;甚至没有关于其可销售性或适用于特定目的的暗示保证。有关详细信息,请参阅 GNU 较小通用公共许可证。

您应该已收到一份 GNU 较小通用公共许可证的副本,与 intbitset 一起;如果没有,请写信给自由软件基金会,Inc.,59 Temple Place,Suite 330,波士顿,MA 02111-1307,USA。

在适用此许可证时,CERN 不放弃其作为政府间组织享有的特权和豁免权,也不受任何司法管辖。

项目详情


下载文件

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

源代码分布

intbitset-3.1.0.tar.gz (189.9 kB 查看哈希值)

上传时间 源代码

构建分布

intbitset-3.1.0-cp312-cp312-win_amd64.whl (79.6 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

intbitset-3.1.0-cp312-cp312-musllinux_1_1_x86_64.whl (476.1 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.1+ x86-64

intbitset-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (478.2 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

intbitset-3.1.0-cp312-cp312-macosx_10_9_universal2.whl (175.7 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

intbitset-3.1.0-cp311-cp311-win_amd64.whl (80.5 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

intbitset-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (491.2 kB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ x86-64

intbitset-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (494.6 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

intbitset-3.1.0-cp311-cp311-macosx_10_9_universal2.whl (179.6 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

intbitset-3.1.0-cp310-cp310-win_amd64.whl (79.6 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

intbitset-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl (464.0 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

intbitset-3.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (430.0 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

intbitset-3.1.0-cp310-cp310-macosx_10_9_universal2.whl (179.0 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

intbitset-3.1.0-cp39-cp39-win_amd64.whl (79.7 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

intbitset-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl (463.8 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

intbitset-3.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (353.8 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.5+ x86-64

intbitset-3.1.0-cp39-cp39-macosx_10_9_universal2.whl (179.2 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

intbitset-3.1.0-cp38-cp38-win_amd64.whl (79.9 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

intbitset-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl (503.7 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

intbitset-3.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (374.4 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.5+ x86-64

intbitset-3.1.0-cp38-cp38-macosx_10_9_universal2.whl (177.0 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

支持者

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