<pre><code>def a():
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', 'z']
count = Counter(List_A)
List_C = [count.get(x) for x in List_B]
</code></pre>
<p>100000个循环,最好为5个:每个循环2.96 usec</p>
<hr/>
<p>使用计数器()并检查无:</p>
<pre><code>def b():
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', 'z']
count = Counter(List_A)
List_C = []
for x in List_B:
val = count.get(x)
if val != None:
List_C.append(val)
</code></pre>
<p>100000个循环,最好为5个:每个循环3.45 usec</p>
<hr/>
<p>不检查“无”值:</p>
<pre><code>def c():
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', 'z']
count = Counter(List_A)
List_C = []
for x in List_B:
List_C.append(count.get(x))
</code></pre>
<p>100000个回路,最好为5个:每个回路3.04 usec</p>
<hr/>
<p>使用@Mafa的解决方案,如果列表_B中的值未出现在列表_A中,则该解决方案不起作用:</p>
<pre><code>def d():
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[x] for x in List_B]
</code></pre>
<p>100000个循环,最好为5个循环:每个循环2.59 usec</p>
<hr/>
<p>检查现有值的Mafa解决方案:</p>
<pre><code>def e():
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>100000个循环,最好为5个:每个循环3.1 usec</p>
<hr/>
<p>接下来的两个功能由@Alex Waygood提出</p>
<pre><code>def f():
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']
c = Counter(filter(set(List_B).__contains__, List_A))
List_C = [v for k, v in sorted(c.items())]
</code></pre>
<p>50000个循环,最好为5个:每个循环4.45 usec</p>
<hr/>
<pre><code>def g():
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', 'z']
c = Counter(filter(List_B.__contains__, List_A))
List_C = [v for k, v in sorted(c.items())]
</code></pre>
<p>50000个循环,最好为5个:每个循环4.78 usec</p>
<p>(不确定是否需要除以2,这里显然不是,因为有50000个循环而不是100000个,如果是这样,我们这里有一个明显的赢家)</p>