Skip to main content
 首页 » 编程设计

python之在列表中查找独特的项目并将它们添加到具有列表理解的新列表中

2025年05月04日11tintown

给定 myList1

myList1 = [5,3,7,2,88,42,2,4,3,7,2] 

我想将我的 myList1 中的所有项目添加到 myList2 中,但每个唯一项目只添加一次。 所以我期待这样的列表:

[5, 3, 7, 2, 88, 42, 4] 

我想通过列表理解来做到这一点。我试过了,但它再次为我提供了与 myList1

中相同的项目
myList2 = [] 
myList2 = [item for item in myList1 if item not in myList2] 

我做错了什么?

请您参考如下方法:

首先假设您关心维护秩序:如果我使用列表组合,我倾向于这样做:

seen = set() 
myList2 = [x for x in myList1 if x not in seen and not seen.add(x)] 

或者交替

from collections import OrderedDict 
myList2 = list(OrderedDict.fromkeys(myList1)) 

这两种方法都是 O(n)。执行此操作时必须小心,不要通过对 list 重复进行成员资格测试(或 index 搜索)来使算法 O(n**2)。

如果您不关心顺序,您真的只想做:

mySet = set(myList1)