python all()遍历字符串

2024-04-18 18:05:47 发布

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

我想遍历一个字符串,并确保该字符串仅由以下字母组成:'a'、'C'、'G'、'T'

>>>string = 'm'
>>>nucleotide = ('A','C','G','T')
>>>print(all(nucleotide for i in string))

这是我输入的,但输出结果是正确的。为什么?你知道吗


Tags: 字符串inforstring字母allprintnucleotide
1条回答
网友
1楼 · 发布于 2024-04-18 18:05:47

您正在测试nucleotide是否不为空;您从不针对它测试i。你知道吗

您必须使用in来实际查看i是否在元组中:

all(i in nucleotide for i in string)

nucleotide设为一个集合会更有效:

nucleotide = {'A', 'C', 'G', 'T'}

更有效的方法是使用正则表达式,此时整个测试都用C代码完成:

import re

dna_bases = re.compile(r'^[ACGT]+$')

print(dna_bases.fullmatch(string) is not None)  # Python 3.4, use .match for earlier versions.

相关问题 更多 >