从列表中删除相等的元素

时间:2011-03-09 15:59:12

标签: python arrays list

我可以检查一个列表是否有两个或更多相等的元素,然后删除它们,即使我不知道我正在寻找哪些具体元素?

或者在集理论中比较两个列表(如A-B)时检查不同的元素。获取B中不存在的A中的元素。

3 个答案:

答案 0 :(得分:2)

如果您不关心项目的顺序,只需使用Python set数据类型而不是列表:

s = set([1, 2, 3, 3])
t = set([2, 4, 6])
print s
print t
print s - t

打印

set([1, 2, 3])
set([2, 4, 6])
set([1, 3])

答案 1 :(得分:1)

对于Or check ...部分问题:

In []: A, B= {1, 2, 3, 4}, {2, 4, 6, 8}
In []: A- B
Out[]: set([1, 3])
关于使用语法的有效性的

更新

In []: A, B= {1, 2, 3, 4}, {2, 4, 6, 8} # seems to be valid for 2.7 and above
# In []: A, B= set([1, 2, 3, 4]), set([2, 4, 6, 8]) # for 2.4 and above
In []: A- B # apparently since 2.4
Out[]: set([1, 3])

答案 2 :(得分:0)

有一个实际的set内置类型,允许您执行intersection()union()之类的操作,但如果您正在处理一个简单的列表并想要它的唯一版本,一个快速而简单的方法就是将它们插入字典并在完成后取出密钥。

>>> L = [1, 2, 2, 3, 3, 3, 4, 5, 6, 6]
>>> d = {}
>>> for num in L:
    d[num] = None


>>> d.keys()
[1, 2, 3, 4, 5, 6]

如果您对订单保留感兴趣,那么有一篇有趣的博客文章探讨了“无条件化”列表的各种方式,无论是否保留订单here