擅长:python、mysql、java
<p>此方法使用<code>emuerate()</code>提供每个项的索引。它只需要<em>一次</em>。它返回具有最小值的第一项的索引,如果序列为空,则返回<code>None</code>。你知道吗</p>
<pre><code>from operator import itemgetter
def index_smallest(seq):
value = itemgetter(1)
try:
return min(enumerate(seq), key=value)[0]
except ValueError as exc:
return None
>>> index_smallest('') is None
True
>>> index_smallest([10, 20, 1, -10, 32])
3
>>> index_smallest((i for i in [10, 20, 1, -10, 32])) # generator expression
3
>>> index_smallest('qwerty')
2
>>> index_smallest(iter('qwerty'))
2
</code></pre>
<p>这也适用于不支持订阅的序列,例如生成器。一个项目在一个废弃的生成器中的位置是否有用还存在争议,但是我想对于一个有限的生成器可能有一些用例。这段代码将处理所有iterables,如果向它传递一个空序列,它就不会崩溃。你知道吗</p>