python all()遍历一个字符串

时间:2017-10-09 07:45:11

标签: python string loops

我想迭代一个字符串并确保字符串只包含这些字母:' A',' C'' G', ' T'

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

这就是我输入的内容,但它在输出中是真实的。那是为什么?

1 个答案:

答案 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.