List 返回元素数相同的列表
我有一个程序可以把DNA序列转换成RNA序列 翻译部分很好。我被卡住的地方是我输入了一个列表 有四个元素,但我得到了一个包含单个元素的列表 我的代码:List 返回元素数相同的列表,list,list-comprehension,python-3.6,List,List Comprehension,Python 3.6,我有一个程序可以把DNA序列转换成RNA序列 翻译部分很好。我被卡住的地方是我输入了一个列表 有四个元素,但我得到了一个包含单个元素的列表 我的代码: dnasequences = [ 'GCTAGCTAGCTAGCTA', 'CTAGCTAGCTAGCTAG', 'TAGCTAGCTAGCTAGC', 'AGCTAGCTAGCTAGCT' ] xlate = {'G': 'C', 'C': 'G', 'T': 'A', 'A': 'U'} def dna2
dnasequences = [
'GCTAGCTAGCTAGCTA',
'CTAGCTAGCTAGCTAG',
'TAGCTAGCTAGCTAGC',
'AGCTAGCTAGCTAGCT'
]
xlate = {'G': 'C', 'C': 'G', 'T': 'A', 'A': 'U'}
def dna2rna(sequences):
rnalist = [xlate[n] for sequence in sequences for n in sequence]
return rnalist
rnasequences = dna2rna(dnasequences)
print(''.join(rnasequences))
这将返回:
高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高高
翻译是正确的,但我希望rnasequences()包含四个
16个字符元素,与输入列表dnasequences()相同。当前您的列表
rnasequences
包含单个字符的64个元素。您可以将此列表拆分为16个元素的较小列表并将其连接起来,这样您就可以获得长度为16的字符串:
>>>[''.join(rnasequences[i:i+16]) for i in range(0, len(rnasequences), 16)]
['CGAUCGAUCGAUCGAU',
'GAUCGAUCGAUCGAUC',
'AUCGAUCGAUCGAUCG',
'UCGAUCGAUCGAUCGA']
要了解拆分是如何工作的,请看一看问题。您的解决方案工作得非常好,我查看了您提供的链接。我突然想到,这个解决方案之所以有效,是因为所有的输入长度都相等。如果不是这样的话,那么这个解决方案就行不通了。是否有一种方法可以逐个元素地将输入列表中列表元素的长度匹配到输出列表?