我想迭代一个字符串并确保字符串只包含这些字母:' A',' C'' G', ' T'
>>>string = 'm'
>>>nucleotide = ('A','C','G','T')
>>>print(all(nucleotide for i in string))
这就是我输入的内容,但它在输出中是真实的。那是为什么?
答案 0 :(得分:4)
您正在测试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.