【问题标题】:remove char in string at many specific index when index are in the list当索引在列表中时,在许多特定索引处删除字符串中的字符
【发布时间】:2026-01-31 20:35:01
【问题描述】:

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

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

【问题讨论】:

    标签: python string python-2.7


    【解决方案1】:

    您可以在join 中使用生成器表达式,使用enumerate 来获取每个字母的索引。如果索引不在ind 中,则保留它。

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

    如 cmets 中所述,如果 indset,则查找速度会比保持 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'
    

    【讨论】:

    • 建议:将ind设为一组