Python中超大布尔列表
我想在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,是属于“真”集合还是“假”集合。
这就是集合的用处。
“真”集合就是所有数字的集合。
如果想让一个数字的状态变为“真”,就把它加入到真集合里。
如果想让一个数字的状态变为“假”,就把它从真集合里移除。
这样生活会简单很多。