擅长:python、mysql、java
<p>使用基于<code>set()</code>和<code>dict()</code>的容器可以使它在时间上线性化,而不是O(n^2)。这应该会加快速度:</p>
<p><em>编辑</em>更简单且可能更快的版本:</p>
<pre><code>import itertools
# set of 'keys' that exist in both
keys = set(pixels) & set(el[0] for el in tabela)
# and generator comprehension with fast lookup
elements = (element[1] for element in tabela
if element[0] in keys)
# this will flatten inner lists and create a list with result:
result = list(itertools.chain.from_iterable(elements))
</code></pre>
<p>只有两个通过<code>tabela</code>运行,都具有时间复杂度O(n)。你知道吗</p>
<p>如果<code>pixels</code>不是唯一的,并且<code>tabela</code>中的相应值应为每个像素的出现进行乘法,则应使用以下方法:</p>
<pre><code>import itertools
# set of 'keys' that exist in both
keys = set(pixels) & set(el[0] for el in tabela)
# and generator comprehension with fast lookup
elements = lambda key: tabela[key][1] if key in keys else []
# this will flatten inner lists and create a list with result:
flatten = itertools.chain.from_iterable
result = list(flatten(elements(pixel) for pixel in pixels))
</code></pre>