擅长:python、mysql、java
<p><code>ls.sort()</code>如果您的列表最初是无序的,请先。在</p>
<p>使用<code>startswith</code>:</p>
<pre><code>In [71]: [i for i, j in zip(ls[:-1], ls[1:]) if not j.startswith(i)]+[ls[-1]]
Out[71]: ['ABCDEFG', 'BCD', 'DEFGHI', 'EF', 'GKL', 'JKLM']
</code></pre>
<p>{cd3>或^:</p>
^{pr2}$
<p>与@sashkello的方法相比:</p>
<pre><code>In [78]: timeit [v for i, v in enumerate(ls[:-1]) if not ls[i+1].startswith(v)]+[ls[-1]]
10000 loops, best of 3: 29.6 us per loop
In [79]: timeit [i for i, j in zip(ls[:-1], ls[1:]) if not j.startswith(i)]+[ls[-1]]
10000 loops, best of 3: 28.5 us per loop
In [80]: timeit [x for x in ls if x not in [y[:len(x)] for y in ls if y != x]]
1000 loops, best of 3: 1.77 ms per loop
</code></pre>