首页 > 解决方案 > 每次值更改时如何拆分列表?

问题描述

我有一个值列表,7,7,7,7,7,7,7,7,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,6,6,6,6,6 等我需要将列表拆分为列表格式的列表每次有值的变化,使其变为 [[7,7,7,7,7,7,7,7],[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],[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 因为它需要我对列表进行排序,并且我同时使用此列表对另一个行列表进行排序,并且我无法重新排序另一个列表,因为它是如何排序为正在运行的行在我的整个表面上订购。

标签: pythonrhinograsshopper

解决方案


您可以尝试以下方法:

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)

推荐阅读