Python如何移除列表中的连续重复元素?
删除列表中的连续重复项
Hey there! 我懂你要的是只移除连续重复的元素,而不是把所有重复项都清掉——你之前用的list(OrderedDict.fromkeys(data1))会把所有重复出现的元素都去重,当然不符合需求啦。
这里给你两种简单的实现方式:
方法1:遍历判断法
这是最直观的思路:我们维护一个结果列表,遍历原列表时,只把和结果列表最后一个元素不同的项加进去(第一个元素直接加入)。
list1 = ["10-31", "19-45", "19-45", "64-01", "10-31", "19-45", "16-17"] list2 = [] for item in list1: # 如果结果列表为空,或者当前元素和最后一个元素不同,就添加 if not list2 or item != list2[-1]: list2.append(item) print(list2) # 输出: ['10-31', '19-45', '64-01', '10-31', '19-45', '16-17']
方法2:列表推导式简化版
如果喜欢更简洁的写法,可以用enumerate拿到元素的索引,对比当前元素和前一个元素是否不同:
list1 = ["10-31", "19-45", "19-45", "64-01", "10-31", "19-45", "16-17"] list2 = [item for idx, item in enumerate(list1) if idx == 0 or item != list1[idx-1]] print(list2) # 输出和上面一致
这两种方法都能精准实现你的需求:只去掉连续重复的项,非连续的重复项会被保留下来。
内容的提问来源于stack exchange,提问作者David Grigoryev
相关产品推荐
相关产品推荐

