擅长:python、mysql、java
<p>验证字符串中的每个字符是否为有效基的快速方法是使用<a href="https://docs.python.org/3/library/stdtypes.html#frozenset.issuperset" rel="nofollow noreferrer">^{<cd1>}</a>方法。例如</p>
<pre><code>valid_bases = set('ACGT')
for s in ('AGCTAT', 'ATCQAT'):
print(s, valid_bases.issuperset(s))
</code></pre>
<p><strong>输出</strong></p>
<pre><code>AGCTAT True
ATCQAT False
</code></pre>
<p>如果要识别非法字符,可以使用<a href="https://docs.python.org/3/library/stdtypes.html#frozenset.difference" rel="nofollow noreferrer">set difference</a>:</p>
<pre><code>valid_bases = set('ACGT')
for s in ('AGCTAT', 'ATCQAT', 'ATCQAZT'):
bad = set(s) - valid_bases
print(s, bad or "ok")
</code></pre>
<p><strong>输出</strong></p>
<pre><code>AGCTAT ok
ATCQAT {'Q'}
ATCQAZT {'Z', 'Q'}
</code></pre>