我有一个清单清单:
mat = [[1,2,3],[4,5,6],[1,2,3],[7,8,9],[4,5,6]]
我想转换为一个集合,即删除重复列表并从中创建一个仅包含唯一列表的新列表。
在上述情况下,所需答案将是
[[1,2,3],[4,5,6],[7,8,9]]
但是当我这样做时set(mat)
,它给了我错误
TypeError:无法散列的类型:“列表”
你能解决我的问题吗?提前致谢!
由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样
>>> mat = [[1,2,3],[4,5,6],[1,2,3],[7,8,9],[4,5,6]]
>>> set(tuple(row) for row in mat)
set([(4, 5, 6), (7, 8, 9), (1, 2, 3)])
我们一次遍历mat
一个列表,将其转换为一个元组(它是不可变的,因此set
s很酷)并将生成器发送到该set
函数。
如果要将结果作为列表列表,则可以通过将set
函数调用的结果转换为列表来将其扩展为列表,如下所示
>>> [list(item) for item in set(tuple(row) for row in mat)]
[[4, 5, 6], [7, 8, 9], [1, 2, 3]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句