擅长:python、mysql、java
<p>只是想出了一些解决办法。在</p>
<p>发电机的几种方法:</p>
<pre><code>max(i for i in s.index if s[i] != 0) # will work only if index is sorted
</code></pre>
<p>以及</p>
^{pr2}$
<p>这也是相当快速和可读的。在</p>
<p>通过numpy的<code>trip_zeros</code>:</p>
<pre><code>import numpy as np
np.trim_zeros(s, 'b').index[-1]
</code></pre>
<p>这比@DSM的两个答案都慢。在</p>
<hr/>
<p><strong>摘要:</strong></p>
<pre><code>timeit np.trim_zeros(s, 'b').index[-1]
10000 loops, best of 3: 89.9 us per loop
timeit s[s != 0].index[-1]
10000 loops, best of 3: 68.5 us per loop
timeit next(i for i in s.index[::-1] if s[i] != 0)
10000 loops, best of 3: 19.4 us per loop
timeit max(i for i in s.index if s[i] != 0)
10000 loops, best of 3: 16.8 us per loop
timeit s.index[s.nonzero()[0][-1]]
100000 loops, best of 3: 1.94 us per loop
</code></pre>