我需要根据索引模板(掩码?)从字符串中punch()
除去特定字符。
例如,我需要在有1
str = abcdefg
mask = 0011001
// len(str) = len(mask) always
print(punch(str, mask)) //Ouput: cdg
基本上,我需要打印给定字符串的所有非空子序列:
Input: abcd
Output: a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd
我正在尝试使用蛮力实施此操作,因此我将生成用于输入字符串长度的所有模板,并使用punch()
“打孔”那些子序列。
PS:这可能是解决此问题的一种不好的方法,但我认为punch()
有一个很不错的方法。
答案 0 :(得分:3)
您可能会使用Itertools中的“ compress()”来创建二进制过滤器。
Compress有两个参数
答案 1 :(得分:2)
如果我正在阅读要正确执行的操作,则可以使用类似这样的功能。
def punch(str, mask):
if (len(str) == len(mask)):
new_list = []
for i in range(len(str)):
if mask[i] == "1":
new_list.append(str[i])
return new_list
else:
return -1