我想在子字符串中有P
或K
的索引,但不是PR
或PK
。现在,我可以编写两行代码,但它比使用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]
其他快速方式也很受欢迎
使用regex
(R|K)([^P]|$)
。这可以自由读取为“R或K,后跟一个不是P的字符([^P]
),或者字符串的结尾($
)”Thid regex实际上会给你结果,而无需再次检查
相关问题 更多 >
编程相关推荐