Итерация по списку строк возвращает отдельные символы - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть список из 3 буквенных строк, которые соответствуют ключам словаря в моей программе.Я хочу перевести каждую трехбуквенную строку, используя словарь, поэтому я написал цикл for.Вместо того, чтобы переводить каждый элемент в списке, он переводит каждый отдельный символ в каждый трехбуквенный элемент, что ничего не дает, потому что в словаре нет пары.Мне кажется, что я забыл кое-что базовое для циклов и списков, но я не могу понять, как заставить это повторять и переводить, как я хочу.Код ниже:

rnaCodonTable = {
# RNA codon table
# U
'UUU': 'F', 'UCU': 'S', 'UAU': 'Y', 'UGU': 'C',  # UxU
'UUC': 'F', 'UCC': 'S', 'UAC': 'Y', 'UGC': 'C',  # UxC
'UUA': 'L', 'UCA': 'S', 'UAA': 'STOP', 'UGA': 'STOP',  # UxA
'UUG': 'L', 'UCG': 'S', 'UAG': 'STOP', 'UGG': 'W',  # UxG
# C
'CUU': 'L', 'CCU': 'P', 'CAU': 'H', 'CGU': 'R',  # CxU
'CUC': 'L', 'CCC': 'P', 'CAC': 'H', 'CGC': 'R',  # CxC
'CUA': 'L', 'CCA': 'P', 'CAA': 'Q', 'CGA': 'R',  # CxA
'CUG': 'L', 'CCG': 'P', 'CAG': 'Q', 'CGG': 'R',  # CxG
# A
'AUU': 'I', 'ACU': 'T', 'AAU': 'N', 'AGU': 'S',  # AxU
'AUC': 'I', 'ACC': 'T', 'AAC': 'N', 'AGC': 'S',  # AxC
'AUA': 'I', 'ACA': 'T', 'AAA': 'K', 'AGA': 'R',  # AxA
'AUG': 'M', 'ACG': 'T', 'AAG': 'K', 'AGG': 'R',  # AxG
# G
'GUU': 'V', 'GCU': 'A', 'GAU': 'D', 'GGU': 'G',  # GxU
'GUC': 'V', 'GCC': 'A', 'GAC': 'D', 'GGC': 'G',  # GxC
'GUA': 'V', 'GCA': 'A', 'GAA': 'E', 'GGA': 'G',  # GxA
'GUG': 'V', 'GCG': 'A', 'GAG': 'E', 'GGG': 'G'   # GxG
}
self.aaList = []
self.codonList = ['AUG', 'AGG', 'CUG', 'AAG', 'AUA', 'AGG', 'ACA', 'GAC', 'GGC', 'GCC', 'GCC', 'CAG', 'CAA', 'CAG', 'CAG', 'GCG', 'GAC', 'UGG', 'CGG', 'GAC', 'UGC', 'UUC', 'AUC', 'CGC', 'GCC', 'GUC', 'GUC', 'GAG', 'AUG', 'CCG', 'GCG', 'GAC', 'UGG', 'GGC', 'AUG', 'GCG', 'AUA', 'AUC', 'AAG', 'GCC', 'AUG', 'CCC', 'CAG', 'GAG', 'AUG', 'GUA', 'AAC', 'GAG', 'CUG', 'UUA', 'CAA', 'AGC', 'CGA', 'AAC', 'GAC', 'CCC', 'UAC', 'UAC', 'AAA', 'UUC', 'GCG', 'CUU', 'CUG', 'CUA', 'CUG', 'CAG', 'AGG', 'GCA', 'CAG', 'AAA', 'UAA']
for codon in self.codonList[:]:
        self.aaList += codon.translate(self.rnaCodonTable)
    print (self.aaList)

Я ожидал, что ['M', 'R', 'L', ...] переведет каждую трехбуквенную строку в соответствии со словарем, но вместо этого я получаю:

['A', 'U', 'G', 'A', 'G', 'G', 'C', 'U', 'G', 'A', 'A', 'G', 'A', 'U', 'A', 'A', 'G', 'G', 'A', 'C', 'A', 'G', 'A', 'C', 'G', 'G', 'C', 'G', 'C', 'C', 'G', 'C', 'C', 'C', 'A', 'G', 'C', 'A', 'A', 'C', 'A', 'G', 'C', 'A', 'G', 'G', 'C', 'G', 'G', 'A', 'C', 'U', 'G', 'G', 'C', 'G', 'G', 'G', 'A', 'C', 'U', 'G', 'C', 'U', 'U', 'C', 'A', 'U', 'C', 'C', 'G', 'C', 'G', 'C', 'C', 'G', 'U', 'C', 'G', 'U', 'C', 'G', 'A', 'G', 'A', 'U', 'G', 'C', 'C', 'G', 'G', 'C', 'G', 'G', 'A', 'C', 'U', 'G', 'G', 'G', 'G', 'C', 'A', 'U', 'G', 'G', 'C', 'G', 'A', 'U', 'A', 'A', 'U', 'C', 'A', 'A', 'G', 'G', 'C', 'C', 'A', 'U', 'G', 'C', 'C', 'C', 'C', 'A', 'G', 'G', 'A', 'G', 'A', 'U', 'G', 'G', 'U', 'A', 'A', 'A', 'C', 'G', 'A', 'G', 'C', 'U', 'G', 'U', 'U', 'A', 'C', 'A', 'A', 'A', 'G', 'C', 'C', 'G', 'A', 'A', 'A', 'C', 'G', 'A', 'C', 'C', 'C', 'C', 'U', 'A', 'C', 'U', 'A', 'C', 'A', 'A', 'A', 'U', 'U', 'C', 'G', 'C', 'G', 'C', 'U', 'U', 'C', 'U', 'G', 'C', 'U', 'A', 'C', 'U', 'G', 'C', 'A', 'G', 'A', 'G', 'G', 'G', 'C', 'A', 'C', 'A', 'G', 'A', 'A', 'A', 'U', 'A', 'A']

Как заставить перевод влиять на целые строки в списке, а не на каждый символ строк?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Для простоты я удалил все свои "я", вы были близки, ваша итерация была правильной, но вам нужно перебирать каждый объект в списке.

И затем использовать этот объект, чтобы найти соответствующее значение всловарь вы определили.Исправлен ваш отступ с печатью, который был неправильным.

Также вам не нужно использовать перевод, и я использовал добавление, чтобы добавить значения в результирующий список.

Надеюсь, что поможет :)

rnaCodonTable = {
# RNA codon table
# U
'UUU': 'F', 'UCU': 'S', 'UAU': 'Y', 'UGU': 'C',  # UxU
'UUC': 'F', 'UCC': 'S', 'UAC': 'Y', 'UGC': 'C',  # UxC
'UUA': 'L', 'UCA': 'S', 'UAA': 'STOP', 'UGA': 'STOP',  # UxA
'UUG': 'L', 'UCG': 'S', 'UAG': 'STOP', 'UGG': 'W',  # UxG
# C
'CUU': 'L', 'CCU': 'P', 'CAU': 'H', 'CGU': 'R',  # CxU
'CUC': 'L', 'CCC': 'P', 'CAC': 'H', 'CGC': 'R',  # CxC
'CUA': 'L', 'CCA': 'P', 'CAA': 'Q', 'CGA': 'R',  # CxA
'CUG': 'L', 'CCG': 'P', 'CAG': 'Q', 'CGG': 'R',  # CxG
# A
'AUU': 'I', 'ACU': 'T', 'AAU': 'N', 'AGU': 'S',  # AxU
'AUC': 'I', 'ACC': 'T', 'AAC': 'N', 'AGC': 'S',  # AxC
'AUA': 'I', 'ACA': 'T', 'AAA': 'K', 'AGA': 'R',  # AxA
'AUG': 'M', 'ACG': 'T', 'AAG': 'K', 'AGG': 'R',  # AxG
# G
'GUU': 'V', 'GCU': 'A', 'GAU': 'D', 'GGU': 'G',  # GxU
'GUC': 'V', 'GCC': 'A', 'GAC': 'D', 'GGC': 'G',  # GxC
'GUA': 'V', 'GCA': 'A', 'GAA': 'E', 'GGA': 'G',  # GxA
'GUG': 'V', 'GCG': 'A', 'GAG': 'E', 'GGG': 'G'   # GxG
}

aaList = []
codonList = ['AUG', 'AGG', 'CUG', 'AAG', 'AUA', 'AGG', 'ACA', 'GAC', 'GGC', 'GCC', 'GCC', 'CAG', 'CAA', 'CAG', 'CAG', 'GCG', 'GAC', 'UGG', 'CGG', 'GAC', 'UGC', 'UUC', 'AUC', 'CGC', 'GCC', 'GUC', 'GUC', 'GAG', 'AUG', 'CCG', 'GCG', 'GAC', 'UGG', 'GGC', 'AUG', 'GCG', 'AUA', 'AUC', 'AAG', 'GCC', 'AUG', 'CCC', 'CAG', 'GAG', 'AUG', 'GUA', 'AAC', 'GAG', 'CUG', 'UUA', 'CAA', 'AGC', 'CGA', 'AAC', 'GAC', 'CCC', 'UAC', 'UAC', 'AAA', 'UUC', 'GCG', 'CUU', 'CUG', 'CUA', 'CUG', 'CAG', 'AGG', 'GCA', 'CAG', 'AAA', 'UAA']
for codon in codonList:
    aaList.append(rnaCodonTable[codon])
print (aaList)
0 голосов
/ 05 февраля 2019

Из документов на string.translate:

Удалите все символы из s, которые находятся в deletechars (если есть), а затем переведите символы, используя таблицу, которая должна быть строкой из 256 символов, даваяперевод для каждого символьного значения, проиндексированный по порядковому номеру.Если для таблицы указано None, то выполняется только шаг удаления символа.

... что совершенно не похоже на то, что вы делаете.Это то, что вы должны делать:

aaList = ""
for codon in self.codonList:
    self.aaList += self.rnaCodonTable[codon]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...