<p>我们可以使用<a href="https://numpy.org/doc/stable/reference/generated/numpy.isin.html" rel="nofollow noreferrer">^{<cd1>}</a></p>
<pre><code>df['C'] = [find_kb[~np.isin(find_kb, a)]
for a, find_kb in zip(df['A'], np.array([findKBs] * len(df)))]
print(df)
A B C
0 [10, 20, 30, 40] [a, b] [90]
1 [50, 60, 70, 80] [c, d] [10, 90]
</code></pre>
<p>或者我们可以使用<code>filter</code></p>
<pre><code>df['C'] = [list(filter(lambda val: val not in a, find_kb))
for a, find_kb in zip(df['A'],[findKBs] * len(df))]
#df['C'] = df['A'].map(lambda list_a: list(filter(lambda val: val not in list_a,
# findKBs)
# )
# )
</code></pre>
<p><code>filter</code>更难阅读,但效率更高:</p>
<pre><code>%%timeit
df['C'] = [list(filter(lambda val: val not in a, find_kb))
for a, find_kb in zip(df['A'],[findKBs] * len(df))]
194 µs ± 10.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df['C'] = [find[~np.isin(find, a)] for a, find in zip(df['A'], np.array([findKBs] * len(df)))]
334 µs ± 38.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df['C'] = df['A'].map(lambda x: np.setdiff1d(findKBs,x))
534 µs ± 17.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
</code></pre>