替换列表中的一系列重复出现?
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 的方式来做到这一点?
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]
我想用第一次出现来代替连续出现的。
例如,如果我目前有一个列表
[1, 1, 1, 2, 3, 3, 3, 4, 4, 5, 1, 1, 1]
所需的输出将是
[1, 2, 3, 4, 5, 1]
我知道我绝对可以通过使用 for 循环遍历列表来做到这一点,但是有没有更 pythonic 的方式来做到这一点?
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]