从列表中连续出现的值中仅选择一个值

Kal*_*lol 0 python iterator list-comprehension list

我有一个这样的清单

l=[1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,5,6,6,6,5,5,5,7,7,8,8,8,8,8,9,9,9,10,10]
Run Code Online (Sandbox Code Playgroud)

现在我只想连续选择一个重复值,所以输出应该是这样的,

l=[1,2,3,4,5,6,5,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

我可以使用 for 循环检查下一个值和前一个值并附加到列表中,但在这种情况下执行时间很长,寻找最有效的快捷方式。

yat*_*atu 5

您可以使用itertools.groupby对连续值进行分组并仅保留分组键

from itertools import groupby

[k for k,_ in groupby(l)]
# [1, 2, 3, 4, 5, 6, 5, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)