有人可以建议我如何找到序列中所有目标字符串的索引。例如,如果我有一个字符串:
seq = 'CGCAGCTGCCG'
我想找到序列中所有'C'的索引。我目前的代码是:
for letter in seq:
if letter == 'C':
print (seq.find(letter))
然而,这只输出第一个'C'的索引。
如何解决此问题?
由于
答案 0 :(得分:2)
使用enumerate
和list comprehension:
>>> seq = 'CGCAGCTGCCG'
>>> [i for i, x in enumerate(seq) if x == 'C']
[0, 2, 5, 8, 9]
答案 1 :(得分:0)
使用enumerate
获取字符串中每个ind /index
的{{1}}
C
答案 2 :(得分:0)
您还可以使用正则表达式函数re.finditer
:
impor re
seq = 'CGCAGCTGCCG'
index = [m.start(0) for m in re.finditer('C', seq)]
但是,对于此特定序列,它似乎更慢:
>>> %timeit [m.start(0) for m in re.finditer('C', seq)]
2.74 µs ± 719 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> %timeit [i for i, x in enumerate(seq) if x == 'C']
1.57 µs ± 433 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)