Python从列表中删除两个重复项中的一个(彼此相邻)

时间:2018-03-08 20:53:37

标签: python list duplicates set

我有一个清单

A= [1,2,3,3,4,4,5,6,4,7]

我想只保留一个34,如果它们与另一个相同的那个相邻。

因此A应该成为

A= [1,2,3,4,5,6,4,7]

我尝试使用set

set[A]

{1, 2, 3, 4, 5, 6, 7}

但它删除了我想保留的最后一个4。看来我应该遍历列表并比较i和i + 1。想知道存在更快更聪明的方式吗?

2 个答案:

答案 0 :(得分:2)

使用列表理解:

[A[i] for i in range(len(A)) if (i==0) or A[i] != A[i-1]]
#[1, 2, 3, 4, 5, 6, 4, 7]

逻辑是迭代列表中的每个索引,并在以下任一条件成立时保留数字:

  • i==0(第一个元素)
  • A[i] != A[i-1]

答案 1 :(得分:0)

试试这个:

A = [1,2,3,3,4,4,5,6,4,7]
newlist = []
newlist.append(A[0])
for i, element in enumerate(A):
    if i > 0 and A[i - 1] != element:
        newlist.append(element)

在这里,我们遍历列表并检查每个元素是否与之​​前的元素不相等。它会返回

[1, 2, 3, 4, 5, 6, 4, 7]