对newb / python newb进行编程,我的工作非常艰巨,所以我发现了很多空闲时间来教自己编码。

我正在处理rosalind.info问题。

到目前为止,这是我的代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 21 09:01:51 2016

@author: aseyedian
"""
codon = ''

q=0
with open('rosalind_prot.txt', 'r') as prot:
    bb = list(prot.read())

mylist = []
for i in range(len(bb)):
     mylist.append(bb[i])


for i in range(0, len(bb),3):
    mylist[i] = [''.join(mylist[i:i+3])]

for i in range(1, len(mylist), 3):
    del mylist[i]

for i in range(2, len(mylist), 3):
    del mylist[i]

print mylist
#This is to create a list of codons which then are translated into amino acids


因为某些原因,

for i in range(1, len(mylist), 3):
        del mylist[i]


返回IndexError(列表分配超出范围),但是,

for i in range(1, len(mylist), 3):
        mylist[i] = 'k'


将每个第二个列表成员变成字母“ k”。为什么是这样?

仅供参考,我现在想做的是将每个核苷酸放入一个列表中,然后将它们按三位分组,然后在将它们并入第一个后删除后面的两个列表成员,然后转到下一个密码子。

例如:
['A','U','G']-> [['AUG'],'U','G']-> ['AUG'],['GCC'(下一个密码子)]等...

最佳答案

不要将bb复制到mylist,然后尝试就地修改mylist。只需从bb复制到mylist

bb = 'AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA'
mylist = []
for i in range(0, len(bb), 3):
    mylist.append(bb[i:i+3])
print mylist


输出:

[“ AUG”,“ GCC”,“ AUG”,“ GCG”,“ CCC”,“ AGA”,“ ACU”,“ GAG”,“ AUC”,“ AAU”,“ AGU”,“ ACC”,“ CGU”,“ AUU”,“ AAC”,“ GGG”,“ UGA”]

关于python - 在尝试删除字符并正常工作时,为什么会不断出现索引错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35636381/

10-12 21:10