类型错误:序列项 0:预期的 str 实例,在 python 3 中找到的列表

Adi*_*hya 1 python bioinformatics

我试图将 RNA 序列作为输入并获取其各自的密码子作为输出。

例如:

输入:AUGGGAACUUCACUACGUAAAUAG

输出:密码子是:AUG, GGA, ACU, UCA, CUA, CGU, AAA, UAG

我在 Python 3.8 中这样编码:

rna = input("Enter the RNA sequence:")
list1 = []
rna = list(rna)

for i in range(len(rna)):
    list2 = []
    list2.append(rna[i : i + 3 : 3])
    liststr = "".join(list2)
    list1.append(liststr)

 print(list1)
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误TypeError: sequence item 0: expected str instance, list found。这段代码有什么问题?

Bro*_*ark 5

你把事情搞得太复杂了。您只需要维护一个列表,并一次遍历字符串三个字符。无需将字符串转换为列表,反之亦然。

rna = input("Enter the RNA sequence:")
result = []
for i in range(0, len(rna), 3):
    result.append(rna[i:i+3])
print(result)
Run Code Online (Sandbox Code Playgroud)

通过样本输入,将产生:

['AUG', 'GGA', 'ACU', 'UCA', 'CUA', 'CGU', 'AAA', 'UAG']
Run Code Online (Sandbox Code Playgroud)