python - 为什么我在尝试删除时总是出现索引错误,而用字符替换却工作正常?

标签 python rosalind

编程 newb/python newb,我的工作要求非常低,所以我找到了很多空闲时间来自学如何编码。

我在工作 this 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' (下一个密码子)], 等等...

最佳答案

当您从列表中删除一个项目时,它现在的项目变少了。因此,长度为 - 1 的列表不再存在。假设您有一个长度为 4 的列表。一旦您尝试访问位置 2 的列表,您已经删除了 2 个项目,并且列表只剩下 2 个项目。现在列表的位置 2 没有任何内容。取而代之的是 del mylist[0]

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

相关文章:

python - 任意数月后斐波那契兔子死亡

python - 尝试在 python 中实现子集总和解决方案的问题

Python Markdown 模块因 unicode 转换、utf-8 而卡住

python - 使用 random 函数随机化计划任务

python - 如何将查询结果映射到 sqlalchemy 中的自定义对象?

python - 无法将 Python 代码发布到网站 rosalind.info

python - 不带部分的 python lambda 函数列表

python - 为什么每次迭代都必须执行取模?

python - 计算 pandas DataFrame 中值的频率

python - 罗莎琳德:孟德尔第一定律