擅长:python、mysql、java
<p>假设<code>list_a</code>和<code>list_b</code>是整数列表,您可以使用<code>np.union1d(list_a, list_b)</code>。使用:</p>
<pre><code>import numpy as np
N = 10**6
list_a = np.random.randint(2*10**6, size=N).tolist()
list_b = np.random.randint(2*10**6, size=N).tolist()
</code></pre>
<hr/>
<p>下面是一个基准测试,它表明<a href="http://students.mimuw.edu.pl/~pbechler/numpy_doc/reference/generated/numpy.union1d.html" rel="nofollow">^{<cd4>}</a>在应用于包含大约一百万个元素的列表时可能会更快:</p>
<pre><code>In [32]: %timeit np.union1d(list_a, list_b)
1 loop, best of 3: 296 ms per loop
In [40]: %timeit set(list_a + list_b)
1 loop, best of 3: 308 ms per loop
In [31]: %timeit set(list_a).union(list_b)
1 loop, best of 3: 338 ms per loop
In [33]: %timeit list(set(list_a + list_b))
1 loop, best of 3: 382 ms per loop
</code></pre>
<p>当然,请注意,<code>np.union1d</code>返回一个NumPy数组,而<code>set</code>和<code>list</code>返回同名类型的Python对象,因此基准测试在某种程度上是一个苹果到橙色的比较。你知道吗</p>