给定一个列表列表:
L = [[1,2,3], [3,4,5], [1,2,3]]
如何获取每个列表都是唯一的列表:
L = [[1,2,3], [3,4,5]]
谢谢
如果您不关心子列表的顺序:
In [11]: list(map(list, set(map(tuple, L))))
Out[11]: [[3, 4, 5], [1, 2, 3]]
更好的是,您可能应该只使用元组集作为数据结构。
有点胡闹,但这个怎么样?
[list(el) for el in set(tuple(el) for el in L)]
它之所以有效,是因为列表不能相互比较,但元组可以。如果您尝试直接从列表列表中创建一个集合,则错误消息会泄露它:
unhashable type: 'list'
L = [[1,2,3], [3,4,5], [1,2,3]]
newlist = []
for item in L:
if item not in newlist:
newlist.append(item)
您可以转换为一组元组,然后再转换回一个列表。
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]]