2013-10-17 39 views
0

从Python列表中只检索非重复元素的最佳选择是什么?说我有以下列表:只从列表中检索非重复元素

lst = [1, 2, 3, 2, 3, 4] 

我想检索以下:

lst = [1, 4] 

23不在该列表中独一无二的,所以他们没有得到检索)

回答

5

这是一个list comprehension微风:

>>> lst = [1, 2, 3, 2, 3, 4] 
>>> [x for x in lst if lst.count(x) == 1] 
[1, 4] 
>>> 

另外,我建议您不要命名变量list - 它会掩盖内置。

+0

更改了变量名称。感谢您的回答。 – linkyndy

+0

这是有效的,但应该警告,由于嵌套循环('count'被实现为循环),列表性能会随着列表的增长而变大,因此性能会迅速下降。 –

6

使用collections.Counter可获得物品计数。与列表理解相结合,只保留一个数。

>>> from collections import Counter 
>>> lst = [1, 2, 3, 2, 3, 4] 
>>> [item for item, count in Counter(lst).items() if count == 1] 
[1, 4]