是的,可以使用itertools.groupby
来删除列表中相邻的重复项,并保留原始索引。itertools.groupby
函数可以将相邻的元素分组,并返回一个迭代器,其中每个元素都是一个键和一个迭代器,迭代器包含相同的键的元素。
下面是一个示例代码,演示如何使用itertools.groupby
来实现这个功能:
from itertools import groupby
def remove_duplicates_with_index(lst):
result = []
for key, group in groupby(enumerate(lst), lambda x: x[1]):
indices = [index for index, _ in group]
result.append(lst[indices[0]])
return result
# 示例用法
lst = [1, 1, 2, 3, 3, 3, 4, 5, 5]
result = remove_duplicates_with_index(lst)
print(result) # 输出: [1, 2, 3, 4, 5]
在上面的示例中,remove_duplicates_with_index
函数接受一个列表作为输入,并使用enumerate
函数为列表中的每个元素添加索引。然后,使用itertools.groupby
函数将相邻的重复元素分组。最后,我们提取每个分组的第一个索引,并根据索引从原始列表中获取对应的元素,将其添加到结果列表中。
这种方法可以删除列表中相邻的重复项,并保留原始索引。
领取专属 10元无门槛券
手把手带您无忧上云