替换列表中的一系列重复出现?

Replace a series of repeated occurrences in a list?

我想用第一次出现来代替连续出现的。

例如,如果我目前有一个列表

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

所需的输出将是

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

我知道我绝对可以通过使用 for 循环遍历列表来做到这一点,但是有没有更 pythonic 的方式来做到这一点?

使用itertools.groupby :

from itertools import groupby
x=[1, 1, 1, 2, 3, 3, 3, 4, 4, 5, 1, 1, 1]
print([i[0] for i in groupby(x)])

不导入任何东西:

l = [1, 1, 1, 2, 3, 3, 3, 4, 4, 5, 1, 1, 1]
[v for i, v in enumerate(l) if i == 0 or v != l[i-1]]

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