擅长:python、mysql、java
<p>您可以从itertools中尝试<code>groupby</code></p>
<pre class="lang-py prettyprint-override"><code>from itertools import groupby
da_list = [22,36,33,39,41,40,50,47,48,49,51,52,78,94,105,98,99,100]
diff = list(map(lambda x: 1 if x>=0 else -1 , da_list[0:1] + [e-da_list[i-1] for i,e in enumerate(da_list[1:], 1)]))
carrying_index = -1
for gp_name, grp in groupby(diff):
length = len(list(grp))
carrying_index += length
if(gp_name == -1 and length >= 5):
print(da_list[carrying_index])
</code></pre>
<p>另一个更简单的方法</p>
<pre class="lang-py prettyprint-override"><code>from itertools import groupby
da_list = [100,99,98,105,94,78,52,51,49,48,47,50,40,41,39,33,36,22,21,20]
diff = da_list[0:1] + [e-da_list[i-1] for i,e in enumerate(da_list[1:], 1)]
for g_name, grp in groupby(zip(da_list, range(len(da_list)), diff), key=lambda x: x[-1]>=0):
if not g_name:
l_group = list(grp)
if(len(l_group) >= 5):
print('index: ', l_group[-1][1])
print('value: ', l_group[-1][0])
# index: 10
# value: 47
</code></pre>