预定义域上的有序子集
项目描述
此包提供了一个内存高效的纯Python 不可变有序集合数据类型,用于处理来自预定义对象池的大量子集。
给定一个名称和一个可哈希对象的元组,bitset()-函数返回一个自定义整数子类,用于从对象池创建有序子集。每个实例都是一个Python整数,其中第nth个池项的存在/不存在由其第nth位被设置/清除表示(即位字符串、2的幂、在colexicographical顺序中的排名)。
仅仅是一个常规(任意精度)整数,并且提供了一些方便的方法来在唯一对象集合和位模式之间进行转换,这使得某些任务可以以更自然的方式进行,例如按字典顺序对集合进行排序,或者以有序的方式枚举可能的组合。
链接
安装
此包在Python 3.7+下运行,没有必需的依赖项,使用pip进行安装
$ pip install bitsets
快速入门
为从你的对象池中提取的集合创建一个类
>>> from bitsets import bitset
>>> PYTHONS = ('Chapman', 'Cleese', 'Gilliam', 'Idle', 'Jones', 'Palin')
>>> Pythons = bitset('Pythons', PYTHONS)
访问其最大和最小实例。按定义顺序检索实例成员
>>> Pythons.supremum
Pythons(['Chapman', 'Cleese', 'Gilliam', 'Idle', 'Jones', 'Palin'])
>>> Pythons.infimum
Pythons()
>>> Pythons(['Idle', 'Gilliam', 'Idle', 'Idle']).members()
('Gilliam', 'Idle')
转换为/从位字符串、布尔序列和int转换
>>> Pythons(['Chapman', 'Gilliam']).bits()
'101000'
>>> Pythons.frombits('101000')
Pythons(['Chapman', 'Gilliam'])
>>> Pythons(['Chapman', 'Gilliam']).bools()
(True, False, True, False, False, False)
>>> Pythons.frombools([True, None, 1, False, 0])
Pythons(['Chapman', 'Gilliam'])
>>> int(Pythons(['Chapman', 'Gilliam']))
5
>>> Pythons.fromint(5)
Pythons(['Chapman', 'Gilliam'])
集合操作和比较方法(参考内置frozenset)
>>> Pythons(['Jones', 'Cleese', 'Idle']).intersection(Pythons(['Idle']))
Pythons(['Idle'])
>>> Pythons(['Idle']).union(Pythons(['Jones', 'Cleese']))
Pythons(['Cleese', 'Idle', 'Jones'])
>>> Pythons.supremum.difference(Pythons(['Chapman', 'Cleese']))
Pythons(['Gilliam', 'Idle', 'Jones', 'Palin'])
>>> Pythons(['Palin', 'Jones']).symmetric_difference(Pythons(['Cleese', 'Jones']))
Pythons(['Cleese', 'Palin'])
>>> Pythons(['Gilliam']).issubset(Pythons(['Cleese', 'Palin']))
False
>>> Pythons(['Cleese', 'Palin']).issuperset(Pythons())
True
进一步阅读
另请参阅
许可证
Bitsets遵循MIT许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于安装软件包的信息。
源分布
bitsets-0.8.4.zip (119.5 kB 查看哈希值)
构建版本
bitsets-0.8.4-py3-none-any.whl (13.6 kB 查看哈希值)