Python if语句继续前进

时间:2012-05-02 02:25:57

标签: python if-statement for-loop

我有以下代码,其中frag是一个字符串列表,按顺序切割(按顺序)DNA序列数据:

for a in frag:
    length_fragment = len(a)
    if  (a[0:5] == 'CCAGC')       and (a[-1:] == 'C'):
        total_length.append(length_fragment) 

但是我想跳到for循环中的下一个a并查看下一个片段的第一个字母是否是CCAGC ...这在python中是否可行。

所以我想将a [-1:] =='C'更改为下一个[0:5] =='ACGAG'的参数。关键词是for循环中的下一个。所以我想在for循环中简要地跳过。

3 个答案:

答案 0 :(得分:1)

for a, next_a in zip(frag, frag[1:]):

如果frag很大,使用itertools.islice代替[1:]

会更有效率

答案 1 :(得分:1)

使用continue跳过for循环的其余部分,然后在下一次迭代开始时重新启动。

答案 2 :(得分:0)

(我不是100%明确你的意图,所以我会解释:你想找到以CCAGC开头的序列,但只有当以下序列以ACGAG开头时才会出现。在那个假设上......)

如果方便的话,将数据存储为包含所有序列的单个字符串,每行一个,然后使用正则表达式:

ccagc_then_acgag = re.compile('(CCAGC.*)\n(?=ACGAG)')
sum( len(seq) for seq in ccagc_then_acgag.findall(sequences) )

我不能说这是否比迭代字符串列表更快或更慢(正则表达式库有一些很好的优化,整个循环在本机代码中运行,但字符串列表的优点是不必扫描整行以找到ACGAG匹配),但值得测试。