<p>我正试图找到两个DNA序列的LCS。我将输出矩阵形式以及包含最长公共序列的字符串。但是,当我在代码中同时返回矩阵和列表时,会出现以下错误:IndexError:字符串索引超出范围</p>
<p>如果我删除包含变量temp和higestcount的代码,我的代码将很好地输出我的矩阵。我正在尝试对矩阵使用类似的编码来生成我的列表。有没有办法避免这个错误?根据序列AGCTGGCAG和TACGCTGGCAT,最长的公共序列应该是GCTGGT。你知道吗</p>
<pre><code>def lcs(x,y):
c = len(x)
d = len(y)
plot = []
temp = ''
highestcount = ''
for i in range(c):
plot.append([])
temp.join('')
for j in range(d):
if x[i] == y[j]:
plot[i].append(plot[i-1][j-1] + 1)
temp.join(temp[i-1][j-1])
else:
plot[i].append(0)
temp = ''
if temp > highestcount:
highestcount = temp
return plot, temp
x = "AGCTGGTCAG"
y = "TACGCTGGTGGCAT"
test = compute_lcs(x,y)
print test
</code></pre>
<p>在<code>temp.join(temp[i-1][j-1])</code>的第一次迭代中,temp作为一个变量是一个空字符串,<code>''</code></p>
<p>字符串中没有可由索引调用的字符,因此temp[任何\u数字]将抛出<code>index out of range</code>异常。你知道吗</p>