擅长:python、mysql、java
<p>您需要一个<em>滑动窗口</em>迭代器;从一个输入序列中产生一行3个元素;然后您所要做的就是计算中间元素大于其他两个元素的窗口的数量。你知道吗</p>
<p>滑动窗口问题已经解决了:<a href="https://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator">Rolling or sliding window iterator?</a>,使用<a href="https://stackoverflow.com/a/6822773">^{<cd1>} function from the top answer there</a>可以得到:</p>
<pre><code>def count_maxima(l):
# b, the middle value, is larger than both a and c
return sum(a < b > c for a, b, c in window(l, 3))
result = [count_maxima(sublist) for sublist in outerlist]
</code></pre>
<p>演示:</p>
<pre><code>>>> outerlist = [[1,2,3],[3,2,1],[3,1,2],[2,3,1]]
>>> [count_maxima(sublist) for sublist in outerlist]
[0, 0, 0, 1]
>>> outerlist = [[1,2,1,3,1],[2,2,2],[2,3,4,3,4,2,3,1]]
>>> [count_maxima(sublist) for sublist in outerlist]
[2, 0, 3]
</code></pre>