12

可能重复:
Python:从列表列表中删除重复项

说我有清单

a=[1,2,1,2,1,3]

如果 a 中的所有元素都是可散列的(就像在那种情况下一样),这将完成这项工作:

list(set(a))

但是,如果

a=[[1,2],[1,2],[1,3]]

?

4

2 回答 2

11

蟒蛇2

>>> from itertools import groupby
>>> a = [[1,2],[1,2],[1,3]]
>>> [k for k,v in groupby(sorted(a))]
[[1, 2], [1, 3]]

也适用于 Python 3,但需要注意的是所有元素都必须是可排序的类型。

于 2012-05-28T12:11:31.987 回答
0

此集合推导适用于 List of Lists 以生成一组元组:

>>> {(tuple(e)) for e in a}
set([(1, 2), (1, 3)])

然后使用它再次将它变成一个列表列表,没有重复:

>>> [list(x) for x in {(tuple(e)) for e in a}]
[[1, 2], [1, 3]]
于 2012-05-28T16:00:56.413 回答