使用 set 删除重复项

Removing duplicates using set

基本上,我想通过从 lst in 到 set 的迭代并将其打印回 list 来完成此操作。我遇到的问题是我无法遍历 set.add(item)。 set.add() 在循环外应用一个值时非常好,但我无法让它在循环内工作。

使用此功能我可以删除重复项。

remove_duplicates(numbers):
    lst = []
    for i in numbers:
        if i not in lst:
            lst.append(i)
    return lst

但是,我希望能够做这样的事情。

这是我能做到的程度。

lst = { }
lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]

for item in lsto:
    lst.add(item)

print(lst)

提前致谢!

我想你是这个意思,

>>> lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]
>>> list(set(lsto))
[1, 2, 3, 4, 5, 7]

set(lsto) 将可迭代对象 lsto 转换为 set,后者又删除了重复的元素。再次将集合转为列表将在最后为您提供一个列表。

要匹配第一个逻辑并保持顺序,您可以使用 OrderedDict :

from collections import OrderedDict
lsto = [1, 1, 1, 2, 3, 4, 1, 2, 5, 7, 5]

print(OrderedDict().fromkeys(lsto).keys())
[1, 2, 3, 4, 5, 7]

随机集合给你相同的顺序,但集合是无序集合,所以你不能依赖于获得任何顺序。