我有一个Python列表,其中包含多个单调递减的元素。但是,所有这些序列都不相邻。
A = [[100, 83, 82, 51, 45, 29, 100, 100, 88, 88, 76, 76, 76, 59, 10, 12, 36, 100, 100, 86, 81, 79, 65, 65, 9, 10, 8]]
我想从A
提取a1=[100, 83, 82, 51, 45, 29]
、a2=[100, 100, 88, 88, 76, 76, 76, 59, 10]
、a3=[100, 100, 86, 81, 79, 65, 65, 9]
。正如你所看到的,我舍弃了12,36,10,8
,因为它们没有遵循任何模式。每个子数组的第一个元素应大于80。因此,我丢弃了以10作为初始元素的单调子数组。
到目前为止,我的代码如下。
def chop_array(array):
itr = 0
prev_element = 1e6
window = list()
mainWindow = list ()
for i, element in enumerate(array):
if element <= prev_element:
window.append(element)
prev_element = element
else:
mainWindow.append(window)
prev_element = element
window = list()
window.append(element)
filter_array = [True if item[0] > 80 else False for item in mainWindow]
return list(itertools.compress(mainWindow,filter_array))
在Python中是否有更有效的方法?
[10, 8]
被舍弃了吗?它形成了一个单调递减的子列表。 - Mustafa Aydın