Python中超大布尔列表

7 投票
6 回答
6600 浏览
提问于 2025-04-15 15:07

我想在Python中创建一个对象,这个对象包含大约2亿个真/假值。这样我就可以有效地修改或获取任何一个真/假值,快速判断某个数字,比如123,456,000,是真还是假,或者改变它的值。

那么,最好的方法是用列表吗?还是数组?或者是类?还是用位运算做一个长整型?或者有其他更好的方法?

我有点菜,所以你可能需要把事情讲得更简单一些,特别是比起我用其他语言提问时。请给我一些操作这个对象的例子。

谢谢

6 个回答

3

你可能还想试试这个bitstring模块,它是用纯Python写的。内部所有数据都是以字节数组的形式存储的,位的掩码和移动操作都是自动为你处理的:

from bitstring import BitArray
# Initialise with two hundred million zero bits
s = BitArray(200000000)
# Set a few bits to 1
s.set(1, [76, 33, 123456000])
# And test them
if s.all([33, 76, 123456000]):
    pass

不过,其他人说得对,简单的集合可能更适合你现在遇到的问题。

4

快速判断一个数字,比如123,456,000,是属于“真”集合还是“假”集合。

这就是集合的用处。

“真”集合就是所有数字的集合。

如果想让一个数字的状态变为“真”,就把它加入到真集合里。

如果想让一个数字的状态变为“假”,就把它从真集合里移除。

这样生活会简单很多。

13

你可以试试这个叫做 bitarray 的模块,或者自己用一个 array 整数数组写一个类似的东西。

撰写回答