擅长:python、mysql、java
<p>您可以用矩阵形式将问题构建为:</p>
<pre><code>import numpy as np
lst = np.array(["a", "abc", "b", "d", "xy", "xyz"], object)
out = np.zeros((len(lst), len(lst)), dtype=int)
for i in range(len(lst)):
for j in range(len(lst)):
out[i,j] = lst[i] in lst[j]
</code></pre>
<p>从中可以得到<code>out</code>为:</p>
^{pr2}$
<p>然后,答案将是<code>lst</code>的索引,其中沿列的<code>òut</code>的和是<code>1</code>(字符串本身就是):</p>
<pre><code>lst[out.sum(axis=1)==1]
#array(['abc', 'd', 'xyz'], dtype=object)
</code></pre>
<hr/>
<p>编辑:
您可以通过以下方式更有效地完成:</p>
<pre><code>from numpy.lib.stride_tricks import as_strided
from string import find
size = len(lst)
a = np.char.array(lst)
a2 = np.char.array(as_strided(a, shape=(size, size),
strides=(a.strides[0], 0)))
out = find(a2, a)
out[out==0] = 1
out[out==-1] = 0
print a[out.sum(axis=0)==1]
# chararray(['abc', 'd', 'xyz'], dtype='|S3')
a[out.sum(axis=0)==1]
</code></pre>