首页 > 解决方案 > 通过索引获取字符串的多个字符

问题描述

我需要punch()根据索引模板(掩码?)从字符串中取出特定字符。

例如,我需要将所有有a的字符都打出来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()有一个很好的方法。

标签: pythonpython-3.xstring-operations

解决方案


您可能会使用 Itertools 中的“compress()”来创建二进制过滤器。

压缩有两个参数

  1. 您想要遍历并“打出”字符的可迭代对象

  2. 定义从第一个迭代中删除哪些元素的数据。任何 'True' 元素都将启用 compress 以从第一个迭代中删除元素

    Itertools 文档的屏幕截图


推荐阅读