【问题标题】:Python remove one of two duplicates (next to each other) in a list [duplicate]Python删除列表中的两个重复项之一(彼此相邻)[重复]
【发布时间】:2018-03-08 20:53:37
【问题描述】:

我有一个清单

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。想知道有什么更快、更智能的方法吗?

【问题讨论】:

    标签: python list duplicates set


    【解决方案1】:

    使用列表推导:

    [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]

    【讨论】:

      【解决方案2】:

      试试这个:

      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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 2019-01-05
        • 2018-09-07
        • 1970-01-01
        • 2018-08-29
        相关资源
        最近更新 更多