TypeError: sequence item 0: expected str instance, list found in python 3
TypeError: sequence item 0: expected str instance, list found in python 3
我试图将 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)
但是,我收到错误 TypeError: sequence item 0: expected str instance, list found
。这段代码有什么问题?
你把事情搞得太复杂了。您只需要维护一个列表,一次遍历字符串三个字符。无需将字符串转换为列表,反之亦然。
rna = input("Enter the RNA sequence:")
result = []
for i in range(0, len(rna), 3):
result.append(rna[i:i+3])
print(result)
使用样本输入,这会产生:
['AUG', 'GGA', 'ACU', 'UCA', 'CUA', 'CGU', 'AAA', 'UAG']
在您的代码中,list2
是一个列表列表。
但是 str.join
不适用于列表的列表。考虑一个最小的例子:
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> ''.join(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, list found
您需要将每个列表连接成一个字符串。类似于:
list2 = [''.join(lst) for lst in list2]
我试图将 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)
但是,我收到错误 TypeError: sequence item 0: expected str instance, list found
。这段代码有什么问题?
你把事情搞得太复杂了。您只需要维护一个列表,一次遍历字符串三个字符。无需将字符串转换为列表,反之亦然。
rna = input("Enter the RNA sequence:")
result = []
for i in range(0, len(rna), 3):
result.append(rna[i:i+3])
print(result)
使用样本输入,这会产生:
['AUG', 'GGA', 'ACU', 'UCA', 'CUA', 'CGU', 'AAA', 'UAG']
在您的代码中,list2
是一个列表列表。
但是 str.join
不适用于列表的列表。考虑一个最小的例子:
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> ''.join(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, list found
您需要将每个列表连接成一个字符串。类似于:
list2 = [''.join(lst) for lst in list2]