假设我有一串DNA“gaaggaggcgccccaagtgagagagaggcagctagaggcgggtaaccggca”
考虑前5个字母:GAAGG
我想把每一个重叠的双字母'GA'、'AA'、'AG'、'GG'替换成与它们出现的可能性相对应的数字,并将它们相加。比如‘GA’=1,‘AA’=2,‘AG’=0.7,‘GG’=0.5。所以对于GAAGG,我的sumAnswer=1+2+.7+5。在
所以在psedoo代码中,我想。。。 -在我的DNA串中的每一个重叠的双元组上迭代 -找到每个唯一双gram对的对应值 -迭代求和每个值
我不太确定如何迭代每一对。我以为for循环可以工作,但这并不能解释重叠:它打印每2对(GAGC=GA,GC),而不是每个重叠的2对(GAGC=GA,AG,GC)
for i in range(0, len(input), 2):
print input[i:i+2]
有什么提示吗?在
只需将范围内的
,2
去掉,并确保不会到达字符串的末尾:,2
告诉Python在每次迭代中向前推进两步。如果忽略它,则默认为向前迈进一步。在other answer应该这样做。在
如果您真的需要迭代器:
但是,只有当您有一个要迭代的真正的长序列时,才需要这个。在
忘记使用
range
和索引算法,迭代对正是zip
的作用:如果您在字典中存储了相应的可能性,例如:
^{pr2}$然后,您可以很容易地用
sum
来求和:相关问题 更多 >
编程相关推荐