识别列表中相等连续元素的组

Edw*_*ard 1 python arrays list arraylist python-3.x

假设我们有一个排序数组,

A = [1,2,2,3,7,7,7,9]
Run Code Online (Sandbox Code Playgroud)

我们希望输出如下所示:

[1]

[2,2]

[3]

[7,7,7]

[9]
Run Code Online (Sandbox Code Playgroud)

这是我的尝试:

def func(A):

    j = 0
    for i in range(len(A)):
        result = []
        while A[i] == A[j] and j < len(A)-1:
            result.append(A[j])
            j += 1
        if result != []:
            print(result)
Run Code Online (Sandbox Code Playgroud)

该函数不包括列表中的最后一个元素,并且运行时间为 O(N^2),我正在尝试改进。任何帮助将不胜感激。

Sam*_*ord 5

itertools.groupby是将相似元素分组到列表中的一种非常方便的方法:

>>> A = [1,2,2,3,7,7,7,9]
>>> from itertools import groupby
>>> for group in groupby(A):
...     print(list(group[1]))
...
[1]
[2, 2]
[3]
[7, 7, 7]
[9]
Run Code Online (Sandbox Code Playgroud)