【发布时间】:2020-06-16 12:08:28
【问题描述】:
我一直在研究一种涉及遗传密码的算法。我首先将所有 4 个遗传碱基 A、C、T、G 与一个列表相关联。 A 是 1,0,0,0。 C 是 0,1,0,0。 T 为 0,0,1,0,G 为 0,0,0,1。有两种不同的遗传密码,一种是原始密码,另一种是基因突变的密码。该算法将根据两个遗传密码之间的差异得出给出的数据的结论。但首先,我需要对数据进行某种预处理,然后才能对算法做出结论。
我正在尝试做的是,当代码在原始代码中看到一个字母时,它应该在复制版本中查看相同位置的字母。如果您查看下面的代码,一个示例将查看 each(A & C) 中的第一个字母或 each(T & T) 中的第二个字母是否相同。如果是,则列表不应更改。例如,在第 2 位,T & T 是相同的。这意味着列表将保持不变并且是:0,0,1,0。但是,如果它不一样,例如 A 和 C,那么算法应该将它们重叠并添加两个字母。所以代码是 1,0,1,0。
到目前为止,代码是这样的:
A = [1,0,0,0]
C = [0,1,0,0]
T = [0,0,1,0]
G= [0,0,0,1]
original = [A,T,T,G,C,T,A]
copy = [C,T,T,A,T,A,A]
final = original # In case you were wondering the purpose of this line is to make a new variable to hold the end result.
for i,v in enumerate(original):
if v == copy[i]:
print(v)
else:
print(final.insert(i,copy[i]))
当我运行它时,我得到“列表索引超出范围”,我尝试使用它并删除 final = original 并且由于某种原因它可以工作,但是它没有在应该的时候组合两个不同的字母,它只是说没有。
我对编程很陌生,所以这可能是一个简单的问题,但我想知道如何才能真正从两个不同的列表中制作两个字母,如果它们不同则重叠。
【问题讨论】:
标签: python-3.x