找到序列中所有目标刺的索引

时间:2014-09-26 16:12:28

标签: python list indexing substring

有人可以建议我如何找到序列中所有目标字符串的索引。例如,如果我有一个字符串:

seq = 'CGCAGCTGCCG'

我想找到序列中所有'C'的索引。我目前的代码是:

for letter in seq:
    if letter == 'C':
        print (seq.find(letter))

然而,这只输出第一个'C'的索引。

如何解决此问题?

由于

3 个答案:

答案 0 :(得分:2)

使用enumeratelist 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)