将列表拆分为较小的重复元素列表并保留原始顺序(Python)

时间:2018-05-23 02:45:27

标签: python list

例如。我有以下列表:     N=[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1] 我需要将其细分如下:     N2=[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5], [1]] 最后的' 1'保持原来的位置没有与其他' 1组合。谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

使用 itertools.groupby

x = [list(i) for _, i in itertools.groupby(N)]

# Result 

[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5], [1]]

答案 1 :(得分:0)

您可以通过遍历列表手动对它们进行分组,记住最后一个元素并在当前元素与最后一个元素不同时开始新列表:

N = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1]

last = object()
data = []
for i in N:
    if i != last:
        data.append([])
    data[-1].append(i)
    last = i

print(data)  # [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5], [1]]