擅长:python、mysql、java
<p>更简单的方法是创建列表的排序副本,然后获取索引:</p>
<pre><code>L = [4,7,9,10,6,11,3]
s = sorted(L)
result = [s.index(x) for x in L] # [1, 3, 4, 5, 2, 6, 0]
</code></pre>
<p>现在,这是一种幼稚的方法,它对像您这样的小列表非常有效,但是对于长列表,它会很慢,因为<code>list.index</code>相对来说比较慢,而且它被反复运行</p>
<p>为了提高效率,可以使用<code>enumerate</code>生成元素索引对的dict。dict中的查找比<code>list.index</code>快得多</p>
<pre><code>s = {x: i for i, x in enumerate(sorted(set(L)))}
result = [s[x] for x in L] # [1, 3, 4, 5, 2, 6, 0]
</code></pre>
<p>在这里,我还将<code>L</code>转换为一个集合,以防重复,否则以后的出现将覆盖早期出现的索引</p>