擅长:python、mysql、java
<p><strong>底部工作液</strong>!在</p>
<p>第一次尝试:</p>
<pre><code>>>> l = ['SRATT', 'SRATW', 'CRAT', 'CRA0', 'SRBTT', 'SRBTW', 'SRAT0', 'SRBT0']
>>> sorted(l, key=lambda x: (x[:-1], x[-1].isdigit()))
['CRAT', 'CRA0', 'SRATT', 'SRATW', 'SRAT0', 'SRBTT', 'SRBTW', 'SRBT0']
</code></pre>
<h3>更新</h3>
<p>@StefanPochmann说,如果开头相同,最后一个非数字字符不同,这将失败。在</p>
<p>我们可以在key的末尾添加额外的元素,即元素本身</p>
^{pr2}$
<h2>更新(最后,希望如此)</h2>
<p>@Demosthene注意到第二次尝试没有成功,这是真的</p>
<p>因此,有效的解决方案是在元素的末尾(如果存在的话)选择任何一个数字,并将其更改为超出字母和数字范围的符号,例如<code>'{'</code>:</p>
^{3}$
<p>或者</p>
<pre><code>sorted(l, key=lambda x: x[:-1] + '{' if x[-1].isdigit() else x)
</code></pre>
<p>正如@StefanPochmann所说。可能更快。在</p>