在Python中有效地确定powerset成员之间的子集

2024-04-26 21:10:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我用下面的方法索引了字母表的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)))

这似乎效率低下,因为它涉及将索引转换为字符串,然后按组件进行比较。非常感谢您的帮助。你知道吗

有没有更简单的操作来快速比较这两个指数?你知道吗


Tags: 方法字符串inforindexreturnbindef
1条回答
网友
1楼 · 发布于 2024-04-26 21:10:27

我不知道Pythonically,但一般来说,检查一个位掩码是否是另一个位掩码的子集的方法是:

(x & y) == x

如果为true,xy的子集。你知道吗

这只是我们熟悉的

A⊆B⇔A∩B=A

相关问题 更多 >