【问题标题】:Return a list with same number of elements返回具有相同数量元素的列表
【发布时间】:2017-06-30 14:24:19
【问题描述】:

我有一个程序可以将 DNA 序列转换为 RNA 序列。

翻译部分工作正常。我卡住的地方是我输入了一个列表 四个元素,但我返回一个包含单个元素的列表。

我的代码:

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))

这会返回:

CGAUCGAUCGAUCGAUGAUCGAUCGAUCGAUCAUCGAUCGAUCGAUCGUCGAUCGAUCGAUCGA

翻译是正确的,但我希望 rnasequences() 包含四个 16 个字符的元素,就像输入列表 dnasequences()。

【问题讨论】:

    标签: list list-comprehension python-3.6


    【解决方案1】:

    目前您的列表rnasequences 包含单个字符的 64 个元素。您可以将此列表拆分为包含 16 个元素的较小列表并将它们连接起来,这样您就可以得到长度为 16 的字符串:

    >>>[''.join(rnasequences[i:i+16]) for i in range(0, len(rnasequences), 16)]
    ['CGAUCGAUCGAUCGAU',
     'GAUCGAUCGAUCGAUC',
     'AUCGAUCGAUCGAUCG',
     'UCGAUCGAUCGAUCGA']
    

    要了解拆分的工作原理,请查看this 问题。

    【讨论】:

    • 您的解决方案运行良好,我查看了您提供的链接。我突然想到这个解决方案有效,因为所有输入的长度都相等。如果不是这种情况,那么此解决方案将不起作用。有没有办法逐个元素地将输入列表中的列表元素的长度与输出列表匹配?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2020-05-21
    • 2012-07-20
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多