使用 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]
随机集合给你相同的顺序,但集合是无序集合,所以你不能依赖于获得任何顺序。
基本上,我想通过从 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]
随机集合给你相同的顺序,但集合是无序集合,所以你不能依赖于获得任何顺序。