-3

给定一个列表列表:

L = [[1,2,3], [3,4,5], [1,2,3]]

如何获取每个列表都是唯一的列表:

L = [[1,2,3], [3,4,5]]

谢谢

4

4 回答 4

3

如果您不关心子列表的顺序:

In [11]: list(map(list, set(map(tuple, L))))
Out[11]: [[3, 4, 5], [1, 2, 3]]

更好的是,您可能应该只使用元组集作为数据结构。

于 2013-03-20T17:33:50.770 回答
2

有点胡闹,但这个怎么样?

[list(el) for el in set(tuple(el) for el in L)]

它之所以有效,是因为列表不能相互比较,但元组可以。如果您尝试直接从列表列表中创建一个集合,则错误消息会泄露它:

unhashable type: 'list'
于 2013-03-20T17:34:26.400 回答
1
L = [[1,2,3], [3,4,5], [1,2,3]]
newlist = []
for item in L:
    if item not in newlist:
        newlist.append(item)
于 2013-03-20T17:37:48.147 回答
0

您可以转换为一组元组,然后再转换回一个列表。

L = [[1,2,3], [3,4,5], [1,2,3]]
setL = set(tuple(i) for i in L) 
newL = list(list(i) for i in setL)
print newL

[[3, 4, 5], [1, 2, 3]]

于 2013-03-20T18:55:32.683 回答