📅  最后修改于: 2023-12-03 15:19:22.774000             🧑  作者: Mango
本篇文章介绍如何在 Python 中删除连续重复的列表元素。
在处理数据时,经常会遇到需要删除连续重复元素的情况。Python 提供了一些简单的方法来处理这个问题。
可以通过列表推导式来创建一个新的列表,仅包含不重复的元素。
lst = [1, 2, 2, 3, 3, 3, 4, 5, 5]
new_lst = [lst[i] for i in range(len(lst)) if i == 0 or lst[i] != lst[i-1]]
这段代码中,我们使用了一个判断语句来判断当前元素是否与前一个元素相同。如果不相同,就将该元素加入新列表中。需要注意的是,第一个元素不可能与前一个元素相同,因此需要将它直接加入新列表中。
这种方法速度较快,但需要额外使用内存来创建新的列表。
下面的代码将对列表中的元素进行遍历,如果发现有连续重复元素,就将它们从列表中删除。
lst = [1, 2, 2, 3, 3, 3, 4, 5, 5]
i = 1
while i < len(lst):
if lst[i] == lst[i-1]:
lst.pop(i)
else:
i += 1
这段代码中,我们使用了一个 while 循环,遍历整个列表。如果发现相邻两个元素相同,就将后一个元素从列表中删除。需要注意的是,在删除元素之后,我们不将计数器 i 加 1。这是因为在删除元素之后,下一个元素会自动移动到当前位置,因此不需要更新 i。
这种方法的优点是,不需要额外的内存空间。缺点是速度较慢,尤其是在列表元素数量较多时。
下面是一个示例,演示如何使用这些方法来删除连续重复的列表元素。
def remove_duplicates(lst):
# 方法一:使用列表推导式
new_lst = [lst[i] for i in range(len(lst)) if i == 0 or lst[i] != lst[i-1]]
# 方法二:使用循环删除重复元素
i = 1
while i < len(lst):
if lst[i] == lst[i-1]:
lst.pop(i)
else:
i += 1
return new_lst, lst
lst1 = [1, 2, 2, 3, 3, 3, 4, 5, 5]
lst2 = [1, 2, 2, 3, 3, 3, 4, 5, 5]
print(remove_duplicates(lst1)) # ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
print(remove_duplicates(lst2)) # ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
输出结果为:
([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
本篇文章介绍了两种方法来删除连续重复的列表元素。第一种方法使用了列表推导式,速度快但需要额外使用内存空间;第二种方法使用了循环删除元素,速度较慢但不需要额外使用内存空间。根据具体情况,可以选择合适的方法来解决问题。