Python 根据规则拆分列表

Python 根据规则拆分列表,python,algorithm,Python,Algorithm,我有一张单子 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]] 试

我有一张单子

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]]
试试这个:

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)
splits=[]
splt=[]
s=0
对于值列表中的v:
如果长度(splt)>0:
如果v>值和s!=1:
拆分.追加(splt)
splt=[]
elif v值)-1
如果长度(splt)>0:
拆分.追加(splt)
试试这个,使用:


从itertools导入groupby
值_列表=[1013.0683.0336.0406.0636.01065.01160.0]
值=660.61538446153846
结果=列表(a的列表(b),groupby中的b(值列表,λx:x<值))
打印(结果)
结果:

[[1013.0, 683.0], [336.0, 406.0, 636.0], [1065.0, 1160.0]]

到目前为止你试过什么?请在您的问题中发布您迄今为止所取得成就的示例。对我来说,它返回
[[1013.0683.0],[336.0406.0636.0],[1065.01160.0]]
。正确。我现在得到了和你一样的输出。