每次值更改时如何拆分列表?

时间:2019-10-29 09:36:53

标签: python rhino grasshopper

我有一个值列表,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,7,7,7,7,7,8, 8,8,8,8,8,8,8,5,5,5,5,5,5,5,6,6,6,6,6等我需要将列表分成每个列表格式的列表时间值发生变化,使其变为[[7,7,7,7,7,7,7,7,7],[6,6,6,6,6,6,6],[7,7, 7,7,7],[8,8,8,8,8,8,8,8],[5,5,5,5,5,5,5],[6,6,6,6,6] ]。

我尝试了如下代码,但是它告诉我,有一个意外的令牌“ for”。还有其他更清洁的方法(一个衬里)吗?

for i, n in enumerate(x):
    inds = []
    if x[i] != x[i-1]:
        inds.append(i)
list(split_after(x, lambda i: i for i in inds))

编辑:我不能使用groupby,因为它需要我对列表进行排序,并且我同时使用此列表对另一行列表进行排序,并且由于其排序方式,我无法对其他列表进行重新排序在我的整个表面上排列整齐的线。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

indexes = [index for index, _ in enumerate(x) if x[index] != x[index-1]]
indexes.append(len(x))
final = [x[indexes[i]:indexes[i+1]] for i, _ in enumerate(indexes) if i != len(indexes)-1]

print(final)