一个lin中的re.finditer(R或K,但不是RP或KP)

2024-10-03 11:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在子字符串中有PK的索引,但不是PRPK。现在,我可以编写两行代码,但它比使用for循环和if要慢。我想要一个带re.finditer的非常快的,可以吗

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]

其他快速方式也很受欢迎


Tags: andinreforifoutstartsites