Так я индексироваться членов Powerset алфавита следующим образом:Определение подмножества среди членов Powerset эффективно в Python
def bytecode_index(some_subset):
mask = 0
for index in bytearray(some_subset):
mask |= (1<<(index-97))
return mask
Это может быть немного нестандартным, и улучшений в отношении это очень приветствуется, но суть моего вопроса заключается в следующем:
Как я могу взять две такие маски и определить, является ли один из подмножеств другого эффективным и питоническим? Одним из таких способов определения того, является ли 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)))
Это кажется неэффективным, так как она включает в себя преобразование индексов в строки, а затем сравнивая их покомпонентны. Любая помощь очень ценится.
Есть ли более простая операция для быстрого сравнения двух индексов?