有什么方法可以使用itertools groupby删除列表中相邻的重复项,但保留原始索引吗?

问题描述 投票:1回答:1

例如,如果我有一个列表[1,2,2,3,2,2,1],我想返回带有索引(0,1,3,4,6)的[1,2,3,2,1]

我不熟悉groupby,我学会了如何消除相邻的重复项,但是可以通过groupby()提取索引吗?谢谢。

python list indexing itertools
1个回答
2
投票

是,有可能,您可以将itertools.groupbyenumerate()和右边的key=结合使用>

例如:

lst = [1,2,2,3,2,2,1]

from itertools import groupby

rv, index = [], []
for v, g in groupby(enumerate(lst), key=lambda k: k[1]):
    rv.append(v)
    index.append(next(g)[0])

print(rv)
print(index)

打印:

[1, 2, 3, 2, 1]
[0, 1, 3, 4, 6]
© www.soinside.com 2019 - 2024. All rights reserved.