我有一个列表
values_list = [1013.0, 683.0, 336.0, 406.0, 636.0, 1065.0, 1160.0]
我也有一个价值
value = 660.6153846153846
此列表基于有3个阶段的假设。第一阶段应高于值,第二阶段更低,第三阶段再次更高。
我想把这个列表分成三个列表,保存值的顺序如下:
values_list = [[1013.0, 683.0], [336.0, 406.0, 636.0], [1065.0, 1160.0]]
使用groupby
:试试这个
from itertools import groupby
values_list = [1013.0, 683.0, 336.0, 406.0, 636.0, 1065.0, 1160.0]
value = 660.6153846153846
result = list(list(b) for a,b in groupby(values_list, lambda x: x < value ))
print (result)
结果:
[[1013.0, 683.0], [336.0, 406.0, 636.0], [1065.0, 1160.0]]
试试这个:
splits = []
splt = []
s = 0
for v in values_list:
if len(splt) > 0:
if v > value and s != 1:
splits.append(splt)
splt = []
elif v <= value and s != -1:
splits.append(splt)
splt = []
splt.append(v)
s = 2*(v > value) - 1
if len(splt) > 0:
splits.append(splt)