如何在Python中替换字符串中的字符,但不使用字符串方法?

2024-10-01 07:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习Python,但我陷入了这样一个问题:我有一个DNA序列,我需要返回它的互补序列。例如,如果我有ATTGCA,它应该返回TAACGT。即,将A替换为T,将T替换为AC替换为{},并将G替换为C。这是一个练习,我不应该使用字符串方法。我试过的每件事,把“T”作为答案。好像只认得第一个字母,然后就停了下来。我该怎么做?在

我试过了:

>>> def get_complementary_sequence(dna):
    for char in dna:
        if char == 'A':
            return 'T'
        elif char == 'T':
            return 'A'
        elif char == 'C':
            return 'G'
        elif char == 'G':
            return 'C'


>>> get_complementary_sequence('ATTGCA')
'T'

也尝试过:

^{pr2}$

Tags: 方法字符串答案getreturn字母序列dna
3条回答

以下是Ashwini Chaudhary的优雅解决方案,对于初学者来说可能更容易理解:

complements = {'A': 'T',
               'T': 'A',
               'C': 'G',
               'G': 'C'}
dna_sequence = 'ATTGCA'
new_sequence = []
for char in dna_sequence:
    new_sequence.append(complements[char])
# new_sequence is now ['T', 'A', 'A', 'C', 'G', 'T']
result = ''.join(new_sequence) # result in 'TAACGT'

试试字典,这样你就不需要if和{}:

In [45]: dic={'A':'T','T':'A','C':'G','G':'C'}

In [46]: strs="ATTGCA"

In [47]: ''.join(dic[x] for x in strs)
Out[47]: 'TAACGT'

或使用map()

^{pr2}$

字符串也是一个字符序列,因此可以对其进行迭代:

for char in sequence:

相关问题 更多 >