擅长:python、mysql、java
<p>当把<code>lambda</code>传递给<code>sort</code>时,需要返回一个整数,而不是布尔值。因此,您的代码应该改为如下所示:</p>
<pre><code>xs.sort(lambda x,y: cmp(len(x), len(y)))
</code></pre>
<p>注意<a href="http://docs.python.org/library/functions.html#cmp" rel="noreferrer">cmp</a>是一个内置函数,如果<code>x</code>小于<code>y</code>,则<code>cmp(x, y)</code>返回-1;如果<code>x</code>等于<code>y</code>,则返回0;如果<code>x</code>大于<code>y</code>,则返回1。</p>
<p>当然,您可以使用<code>key</code>参数:</p>
<pre><code>xs.sort(key = lambda s: len(s))
</code></pre>
<p>这告诉<code>sort</code>方法根据键函数返回的任何内容进行排序。</p>
<p>编辑:感谢下面的balpha和Ruslan指出,您可以直接将<code>len</code>作为关键参数传递给函数,从而消除了对<code>lambda</code>的需要:</p>
<pre><code>xs.sort(key = len)
</code></pre>
<p>正如Ruslan在下面指出的,您还可以使用内置的<a href="http://docs.python.org/library/functions.html#sorted" rel="noreferrer">sorted</a>函数,而不是<code>list.sort</code>方法,该方法创建一个新列表,而不是对现有列表进行就地排序:</p>
<pre><code>print sorted(xs, key=len)
</code></pre>