📅  最后修改于: 2023-12-03 15:36:56.967000             🧑  作者: Mango
在处理数据的时候,经常会遇到需要删除连续重复的情况。Python提供了不同的方法实现这一目的。本文将介绍常用的几种方法及其优缺点。
最简单、最直观的方法就是使用循环。具体实现如下:
def remove_duplicates(input_list):
result = []
for item in input_list:
if len(result) == 0 or item != result[-1]:
result.append(item)
return result
此方法的思路是遍历input_list,如果当前元素不等于result列表的最后一个元素,就将其加入到result。这种方法的时间复杂度为O(n),其中n是input_list的长度。
此方法的优点是简单易懂,缺点是效率较低,特别是当input_list很长时。
另一种方法是使用集合。集合是Python中去重的一种数据类型,具体实现如下:
def remove_duplicates(input_list):
return list(set(input_list))
此方法的思路是将input_list转换成集合类型,去除掉其中的重复元素,再将结果转换回列表类型。这种方法的时间复杂度为O(n),其中n是input_list的长度。
此方法的优点是简单、高效,缺点是不保留原有列表的顺序。
Python的itertools模块提供了很多实用的迭代器,其中就包括用于去重的迭代器。具体实现如下:
import itertools
def remove_duplicates(input_list):
return [k for k, g in itertools.groupby(input_list)]
此方法的思路是使用itertools.groupby迭代器,将input_list中连续重复的元素分组,然后只保留每组的第一个元素。这种方法的时间复杂度为O(n),其中n是input_list的长度。
此方法的优点是简单、高效,同时保留原有列表的顺序。
本文介绍了三种常用的方法来删除连续重复的Python。其中,循环方法简单易懂但效率较低,集合方法简单高效但不保留原有顺序,使用itertools模块的方法简单高效并且保留原有顺序。根据实际需求,选择不同的方法即可。