Python中的Begginer-DNA序列列表的RNA转录本

Python中的Begginer-DNA序列列表的RNA转录本,python,list,Python,List,我是Python的新手,我正在尝试获取DNA序列的RNA转录。虽然我可以对一个DNA序列这样做,但我正试图找到一种方法来对一系列DNA序列这样做。我希望你能给我一些指导 # Given this DNA sequence, get the RNA sequence: dna = 'ACCTGACT' # Defining the RNA transcription formula def to_rna(dna_strand): mapping = {'G':'C', 'C':'G',

我是Python的新手,我正在尝试获取DNA序列的RNA转录。虽然我可以对一个DNA序列这样做,但我正试图找到一种方法来对一系列DNA序列这样做。我希望你能给我一些指导

# Given this DNA sequence, get the RNA sequence:
dna = 'ACCTGACT'

# Defining the RNA transcription formula
def to_rna(dna_strand):
    mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}
    rna_strand = ''
    for char in dna_strand:
        rna_strand += mapping[char]
    return rna_strand
输出:

RNA transcript= UGGACUGA
我一直想做的是,从DNA序列列表中获取RNA转录列表。我已经尝试过修改上面的代码,但我无法实现任何解决方案。我想知道你是否能帮我回答这个问题

投入将是:

dna1= ['ACCTGACT','AATTGTCT']
预期成果:

rna1 = ['UGGACUGA','UUAACAGA'] 
您可以使用:

上述内容相当于一个循环:

您可以使用:

上述内容相当于一个循环:


这是地图功能的主要示例map'接受函数f和列表l,并将f应用于l的每个元素。在你的情况下,那是

dnas = ['ACCTGACT' , 'ATTA']

mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}

def to_rna(dna):
        return ''.join(map(lambda x: mapping[x], dna))
        
rnas = list(map(to_rna, dnas))
print(rnas)

这是地图功能的主要示例map'接受函数f和列表l,并将f应用于l的每个元素。在你的情况下,那是

dnas = ['ACCTGACT' , 'ATTA']

mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}

def to_rna(dna):
        return ''.join(map(lambda x: mapping[x], dna))
        
rnas = list(map(to_rna, dnas))
print(rnas)

使用内置的带整数键的
translate
,这比自定义方法和其他答案快得多(40倍)

table = {71: 67, 67: 71, 84: 65, 65: 85}
dna = 'ACCTGACT'
assert dna.translate(table) == 'UGGACUGA'
e、 g.与:

$ python -m timeit "table = <table>; x = 'gctaatcg'*N" '<method>'
在最新的MacBook上使用Python 3.9.0运行上述操作:

N = 1000
TRLT_ORD  20000 loops, best of 5: 10.3 usec per loop
TRLT_STR  500 loops, best of 5: 394 usec per loop
JOIN_MAP  500 loops, best of 5: 401 usec per loop
e、 g.最快版本:

$ python -m timeit "table = {ord('g'): ord('c'), ord('c'): ord('g'), ord('t'): ord('a'), ord('a'): ord('u')}; x = 'gctaatcg'*1000" 'x.translate(table)'
注意,对于小数字来说,这并不重要

N = 1
TRLT_STR  500000 loops, best of 5: 406 nsec per loop
TRLT_ORD  500000 loops, best of 5: 641 nsec per loop
JOIN_MAP  500000 loops, best of 5: 931 nsec per loop

使用内置的带整数键的
translate
,这比自定义方法和其他答案快得多(40倍)

table = {71: 67, 67: 71, 84: 65, 65: 85}
dna = 'ACCTGACT'
assert dna.translate(table) == 'UGGACUGA'
e、 g.与:

$ python -m timeit "table = <table>; x = 'gctaatcg'*N" '<method>'
在最新的MacBook上使用Python 3.9.0运行上述操作:

N = 1000
TRLT_ORD  20000 loops, best of 5: 10.3 usec per loop
TRLT_STR  500 loops, best of 5: 394 usec per loop
JOIN_MAP  500 loops, best of 5: 401 usec per loop
e、 g.最快版本:

$ python -m timeit "table = {ord('g'): ord('c'), ord('c'): ord('g'), ord('t'): ord('a'), ord('a'): ord('u')}; x = 'gctaatcg'*1000" 'x.translate(table)'
注意,对于小数字来说,这并不重要

N = 1
TRLT_STR  500000 loops, best of 5: 406 nsec per loop
TRLT_ORD  500000 loops, best of 5: 641 nsec per loop
JOIN_MAP  500000 loops, best of 5: 931 nsec per loop

非常感谢你。这比我想象的要简单。我试图修改我的初始代码。这真的很有帮助,我感谢你的帮助!:)非常感谢你。这比我想象的要简单。我试图修改我的初始代码。这真的很有帮助,我感谢你的帮助!:)