Python:嵌套for循环 - 名称未定义

时间:2013-11-12 20:23:34

标签: python-2.7 for-loop nested bioinformatics dna-sequence

首先,我必须指出我不是程序员,所以这可能是一个愚蠢的问题,但我想了解这里发生了什么。

程序应该通过字符串(基因组),并滑动任意长度的窗口(在这种情况下为“l”)。它搜索给定长度(k)的重复字符序列并记录序列的出现次数。我确实设法在整个字符串中找到重复的序列,但是所说的窗口让我很烦恼。我尝试使用嵌套循环:

for i in range(len(genome) - k + 1):
    for c in range(len(genome))[c:c+l]:
        kmer = genome[i:i+k]
        if kmer in d:
            d[kmer] += 1
        else:
            d[kmer] = 1

我收到错误:“NameError:name'c'未定义” 这个问题的原因是什么,是否有一种易于理解的修复方法?效率并不重要,所以我想保持一个类似的结构(我发现很多主题描述了避免使用嵌套for循环的方法,但我现在发现它很混乱。)

提前谢谢。

1 个答案:

答案 0 :(得分:4)

您在第二个c循环中定义for,并尝试在同一语句中使用它。因此,在c循环开始之前,for未定义,因此未定义。

修改

根据您的评论判断,我相信您要做的是沿着基因组滑动长度为l的窗口。然后你想找到一些富含某些k-mer的窗口。为此,我会修改你的第二个循环,以查看当前窗口开始的下一个l位置:

for c in range(i, i+l):