代码之家  ›  专栏  ›  技术社区  ›  Jan

当索引位于列表中时,在多个特定索引处删除字符串中的字符

  •  0
  • Jan  · 技术社区  · 7 年前

    我想从字符串中删除字符 seq_in = 'KPKPAJDSKGRPRRKAPPP' 在列表中的特定索引处 ind = [0, 1, 2, 3, 8, 10, 11, 12, 13, 14, 16, 17, 18] 。结果应该是 'AJDSGA' 。我试过了 remove() 通过循环 ind 列表,但每个字符的索引都已移动。

    如何在没有循环的情况下从列表中删除索引处的许多字符?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Cory Kramer    7 年前

    可以在中使用生成器表达式 join 使用 enumerate 获取每个字母的索引。如果索引不在 ind 那就留着吧。

    >>> ''.join(j for i,j in enumerate(seq_in) if i not in ind)
    'AJDSGA'
    

    如评论中所述,如果 ind公司 是一个 set 如果它保持 list

    >>> ind = {0, 1, 2, 3, 8, 10, 11, 12, 13, 14, 16, 17, 18}
    >>> ''.join(j for i,j in enumerate(seq_in) if i not in ind)
    'AJDSGA'