擅长:python、mysql、java
<p>使用您的解决方案,您执行的计算数量等于<code>len(List_A) * len(List_B)</code>(您的列表理解)</p>
<p>相反,首先计算发生次数,然后进行列表理解:</p>
<pre class="lang-py prettyprint-override"><code>List_A = ['a', 'd','f','h','g','e','f','a','f','h','h','d','b','c','c','a']
List_B = ['a', 'b','c','d','e','f','g','h']
occ = dict()
for x in List_A:
occ.setdefault(x, 0)
occ[x] += 1
List_C = [occ.get(x, 0) for x in List_B]
</code></pre>
<p>通过这种方式,您可以遍历<code>List_A</code>一次和<code>List_B</code>一次</p>
<p>[编辑]</p>
<p>更新了最后一行的列表理解,以解决<code>x</code>不在<code>List_A</code>中的情况(参见@AchilleG的评论)</p>