根据规则拆分列表



我有一个列表

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)

最新更新