1

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'

2 つおきのリスト メンバーを文字 'k' に変換します。どうしてこれなの?

参考までに、私が今やろうとしているのは、すべてのヌクレオチドをリストに入れ、それらを 3 でグループ化し、次の 2 つのリスト メンバーを最初のリストに組み込んだ後に削除し、次のコドンに移動することです。

例: ['A', 'U', 'G'] -> [['AUG'], 'U', 'G'] -> ['AUG'], ['GCC' (次のコドン) 』など…

4

4 に答える 4

2

リストから項目を削除すると、項目が少なくなりました。したがって、長さ - 1 の位置にあるリストは存在しなくなります。長さ 4 のリストがあるとします。位置 2 のリストにアクセスしようとすると、すでに 2 つのアイテムが削除されており、リストには 2 つのアイテムしか残っていません。現在、リストの 2 番目の位置には何もありません。代わりに、del mylist[0].

于 2016-02-25T19:27:37.817 に答える
1

mylistそこからアイテムを削除すると変更されます - 元の長さに基づいて生成されたインデックスを引き続き使用している間は、より少ないアイテムが含まれます。

例えば、

mylist = ['A', 'B', 'C', 'D', 'E']

あなたのコードは、リストから 'B' と 'E' (番号 1 と 4) を削除すると仮定します。

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

ただし、最初のパス 'B' が削除された後、リストは ['A', 'C', 'D', 'E'] になりました。現時点では、このリストには 4 つのアイテムしかなく、4 番目のアイテムはもう存在しません。

やりたいことは、元のリストから #0、#3、#6、... の項目を含むリストを取得することです。次のようにリストスライスを簡単に使用できます。

print mylist[0::3]
于 2016-02-25T19:33:09.430 に答える
1

bbにコピーしてから、その場mylistで変更しようとしないでくださいmylistbbからにコピーするだけ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']

于 2016-02-25T19:35:39.010 に答える