当索引在列表中时,删除许多特定索引处的字符串中的char

问题描述 投票:0回答:1

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

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

python string python-2.7
1个回答
3
投票

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

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

正如评论中所提到的,如果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'
© www.soinside.com 2019 - 2024. All rights reserved.