我想在列表seq_in = 'KPKPAJDSKGRPRRKAPPP'
中的特定索引处从字符串ind = [0, 1, 2, 3, 8, 10, 11, 12, 13, 14, 16, 17, 18]
中删除字符。结果应该是'AJDSGA'
。我通过循环remove()
列表尝试了ind
字符串,但每个字符的索引都被移位了。
如何在没有循环的情况下从列表中删除索引处的多个字符?
您可以使用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'