<p>有很多方法可以做到这一点。比如说,</p>
<ol>
<li>你可以记录总数</li>
</ol>
<pre><code>total = 0
for aminos in aa:
# No need to check if aminos in protein because .count() returns 0 if that's the case
total += protein.count(aminos)
</code></pre>
<ol start=“2”>
<li>您可以编写一个生成器表达式,并使用<code>sum()</code>将<code>aa</code>中每个<code>amino</code>的<code>count()</code>的所有值相加</李>
</ol>
<pre><code>total = sum(protein.count(amino) for amino in aa)
</code></pre>
<ol start=“3”>
<li>您可以迭代蛋白质并检查每个字符是否在<code>aa</code>中。但首先,将<code>aa</code>转换为<code>set</code>以降低成员资格检查的成本</李>
</ol>
<pre><code>s_aa = set(aa)
total = sum(p in s_aa for p in protein)
</code></pre>
<p>这是因为如果<code>p</code>在<code>s_aa</code>中,则<code>p in s_aa</code>的计算结果为<code>True</code>,否则<code>False</code>的计算结果为<code>True</code><code>True</code>计为一,<code>False</code>计为零,因此当您<code>sum</code>一组<code>True/False</code>值时,您会得到<code>True</code>值的数量</p>
<ol start=“4”>
<li>对<code>protein</code>中的所有字符进行计数,然后对您关心的字符进行计数之和:</li>
</ol>
<pre><code>counts = {}
for p in protein:
ct = counts.get(p, 0) # get counts[p], default to 0 if not exists
counts[p] = ct + 1
total = sum(counts.get(amino, 0) for amino in aa)
</code></pre>
<p><a href="https://stackoverflow.com/a/64917132/843953">Vignesh's ^{<cd19>} technique</a>与此方法相同。计数元素比<a href="https://stackoverflow.com/a/64917281/843953">Hamza's approach</a>好,因为它只在<code>protein</code>字符串上迭代一次,而不是对<code>aa</code>的每个元素迭代一次。这也是我的第三种或第四种方法优于#1和#2的原因</p>