给定 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)
