所以我用下面的方法索引了字母表的powerset的成员:
def bytecode_index(some_subset):
mask = 0
for index in bytearray(some_subset):
mask |= (1<<(index-97))
return mask
这可能有点不标准,关于改进它的改进是非常受欢迎的,但我的问题的关键实际上如下:
我如何才能采取两个这样的面具,并确定是否一个是另一个有效的和pythonically子集?确定index1
是否是index2
的子集的一种方法是比较它们的二进制字符串。如果index1
有一个1,其中index2
有一个0,则index1
对应的集合不是index2
对应的集合的子集。你知道吗
我为此写了这样的东西:
def compare_binary_strings(index1,index2):
return not any(x == "1" and y == "0" for x,y in zip(bin(index1), bin(index2)))
这似乎效率低下,因为它涉及将索引转换为字符串,然后按组件进行比较。非常感谢您的帮助。你知道吗
有没有更简单的操作来快速比较这两个指数?你知道吗
我不知道Pythonically,但一般来说,检查一个位掩码是否是另一个位掩码的子集的方法是:
如果为true,
x
是y
的子集。你知道吗这只是我们熟悉的
A⊆B⇔A∩B=A
相关问题 更多 >
编程相关推荐