擅长:python、mysql、java
<p>当然,您可以很容易地将以下内容写成列表理解:</p>
<pre><code>[(a, b) for a in A for b in B if a in b]
</code></pre>
<p>这可能会稍微加快循环速度,但不要期望太高。我怀疑使用正则表达式对这个问题有任何帮助。在</p>
<p><strong>编辑</strong>:以下是一些计时:</p>
^{pr2}$
<p>结果:</p>
<pre><code>Nested loop [0.3641810417175293, 0.36279606819152832, 0.36295199394226074]
List comprehension [0.362030029296875, 0.36148500442504883, 0.36158299446105957]
Regular expressions [1.6498990058898926, 1.6494300365447998, 1.6480278968811035]
ninjagecko [0.06402897834777832, 0.063711881637573242, 0.06389307975769043]
</code></pre>
<p><strong>编辑2:</strong>在计时中添加了<a href="https://stackoverflow.com/q/8289119/279627">alogrithm suggested by ninjagecko</a>的变体。你可以看到它比所有的暴力手段都要好得多。在</p>
<p><strong>编辑3:</strong>使用集合而不是列表来消除重复项。(我没有更新时间——它们基本上保持不变。)</p>