1
サブストリングにはP
またはK
のインデックスがありますが、PR
またはPK
ではありません。今私は2行のコードを行うことができますが、それはif
とfor
ループを使用するよりも遅いです。私はre.finditer
で非常に速いものを望みますか?re.finditer(RまたはKではRPまたはKPではない)
proseq = "NSDSECPLSHDGYCLHDGVCMYIEALDKYACNCVVGYIGERCQYRDLKWWELRP"
xxx = [m.start() for m in re.finditer('(R|K)', proseq)]
yyy = [m.start() for m in re.finditer('(RP|KP)', proseq)]
print list(set(xxx)^set(yyy))
OUT> [40, 27, 44, 47]
鉱山(とそれがソートされている)よりも高速であるfor
ループ、
proseq = "NSDSECPLSHDGYCLHDGVCMYIEALDKYACNCVVGYIGERCQYRDLKWWELPR"
cut_sites=[]
for i in range(0,len(proseq)):
if proseq[i]=='K' and proseq[i+1]!='P':
cut_sites.append(i)
elif proseq[i]=='R' and proseq[i+1]!='P':
cut_sites.append(i)
OUT> [27, 40, 44, 47]
他の高速な方法は非常に歓迎されています。
'P(?![RK])|(?<!P)K'正規表現 –