📜  Python|从列表中删除连续的重复项(1)

📅  最后修改于: 2023-12-03 15:04:23.640000             🧑  作者: Mango

Python | 从列表中删除连续的重复项

在编程过程中,我们经常需要处理列表中的重复项。有时候,我们可能只想删除连续的重复项,而保留非连续的重复项。

在本文中,我们将介绍如何使用Python来删除一个列表中连续的重复项,同时保留非连续的重复项。

方法1: 遍历列表并移除连续的重复项

我们可以使用一个循环来遍历列表,并使用条件语句来判断相邻的两个元素是否相等。如果相等,则移除后一个元素。如果不相等,则继续遍历下一个元素。

以下是使用这种方法删除连续重复项的示例代码:

def remove_consecutive_duplicates(lst):
    i = 1
    while i < len(lst):
        if lst[i] == lst[i-1]:
            lst.pop(i)
        else:
            i += 1
    return lst

这段代码首先初始化一个变量 i,表示当前遍历的索引位置,初始值为1。然后,在循环中,我们首先判断当前元素和前一个元素是否相等。如果相等,我们使用 lst.pop(i) 方法删除当前元素并返回新列表。否则,我们将 i 加1,并继续遍历下一个元素。

下面是一个使用此函数的示例:

lst = [1, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6]
result = remove_consecutive_duplicates(lst)
print(result)  # 输出: [1, 2, 3, 4, 5, 6]

这段代码会输出一个移除了连续重复项的新列表。

方法2: 使用列表推导式删除连续的重复项

另一种方法是使用列表推导式。我们可以遍历列表,并将只包含元素和前一个元素不相等的元素添加到一个新列表中。

以下是使用列表推导式删除连续重复项的示例代码:

def remove_consecutive_duplicates(lst):
    return [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, 6, 6, 6]
result = remove_consecutive_duplicates(lst)
print(result)  # 输出: [1, 2, 3, 4, 5, 6]

同样地,这段代码会输出一个移除了连续重复项的新列表。

以上就是使用Python从一个列表中删除连续的重复项的两种方法。希望这篇文章对你有帮助!