如何删除已经在list中的重复项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除已经在list中的重复项相关的知识,希望对你有一定的参考价值。

如何删除list中的重复项,而且这些重复项并不是连续的,如何写这样的比较语句呢?
我想了下面那种方法,先比较,如果发现相同,就给相同的项之前加上“E”,然后比较完后再读一遍,将所有以"E"开头的项都删了,但是这好像不行,这是什么原因呢?而且我觉得这个方法很不好!!

For i = 0 To ComboICName.ListCount - 1
For j = i + 1 To ComboICName.ListCount - 1
If ComboICName.List(i) = ComboICName.List(j) Then
ComboICName.List(j) = "E" & ComboICName.List(i)
End If
Next
Next
For i = 0 To ComboICName.ListCount - 1
If Left(Trim(ComboICName.List(i))) ="E" Then
ComboICName.RemoveItem i
End If
Next
ComboICName.Refresh

请各位大虾帮帮小弟~~感激不敬!!

Private Sub Command1_Click()
For i = 0 To Combo1.ListCount - 1
For j = i + 1 To Combo1.ListCount - 1
If Combo1.List(i) = Combo1.List(j) Then Combo1.RemoveItem (j)
Next j
Next i
Combo1.Refresh
End Sub
参考技术A For i = 0 To ComboICName.ListCount - 1
For j = i + 1 To ComboICName.ListCount - 1
if i<=ComboICName.ListCount - 1 and j<=ComboICName.ListCount - 1 then
If ComboICName.List(i) = ComboICName.List(j) Then
ComboICName.RemoveItem j
j=j-1
End If
end if
Next
Next

这样行不行?
参考技术B Private Sub Command1_Click()
Dim chongfu As Boolean
Do
chongfu = False
For i = 0 To Combo1.ListCount - 2
For j = i + 1 To Combo1.ListCount - 1
If Combo1.List(i) = Combo1.List(j) Then
chongfu = True
GoTo chuli
End If
Next j
Next i
chuli:
Combo1.RemoveItem j
Loop Until Not chongfu
End Sub

Private Sub Form_Load()
Command1.Caption = "整理组合框项目"
End Sub

从 Ocaml 中的列表列表中删除重复项?

【中文标题】从 Ocaml 中的列表列表中删除重复项?【英文标题】:Removing duplicates from a list of lists in Ocaml? 【发布时间】:2021-07-01 20:24:42 【问题描述】:

我是 Ocaml 的新手,我被分配仅使用 List 模块删除列表列表的所有重复项。这是我写的代码:

let sort_and_remove_duplicates l = 
  let sl = List.sort compare l in
  let rec go l acc = match l with
    | [] -> List.rev acc
    | [x] -> List.rev (x::acc) 
    | (x1::x2::xs) -> 
      if x1 = x2
      then go (x2::xs) acc
      else go (x2::xs) (x1::acc)
  in go sl []

这会通过空列表的情况,但对于其他情况则失败,例如:

[[3;1;3]; [4]; [1;2;3]] 

我做错了什么?

【问题讨论】:

列表列表的重复是什么意思? 【参考方案1】:

这是我在你所谓的失败案例上运行你的代码时得到的结果:

# sort_and_remove_duplicates [[3;1;3]; [4]; [1;2;3]];;
- : int list list = [[1; 2; 3]; [3; 1; 3]; [4]]

这对我来说似乎是正确的答案。输入列表中没有重复项,因此输出列表是相同的(排序除外)。

您对此输入的期望是什么?

(作为旁注,您的代码看起来非常好,至少对于我认为它应该做的事情。)

【讨论】:

以上是关于如何删除已经在list中的重复项的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 MySQL 表中的重复项

python如何删除list里重复的元素?

如何删除 List<MyDataModel> 的重复项(Dart/Flutter)

python如何删除list里重复的元素

如何删除list里面的重复字段

如何比较两个对象数组以删除重复项?