[Python] 利用 Set 來去除重覆的 List
Set 很好用,可以拿來去除重覆元素:
>>> s = set([1, 1, 2, 2, 3, 4, 5])
>>> s
set([1, 2, 3, 4, 5])
但例如要加入 Set 的元素本身就是個 List 就會發生問題:
>>> s = set()
>>> s.add([-4, 0, 1, 2])
TypeError: unhashable type: 'list'
解決方式就是先變成 Tuple,之後再變回來:
>>> nums = [[-4, 0, 1, 2], [3, 4, 5, 6], [-4, 0, 1, 2]]
>>> s = set(tuple(l) for l in nums)
>>> s
set([(-4, 0, 1, 2), (3, 4, 5, 6)])
>>> [list(t) for t in s]
[[-4, 0, 1, 2], [3, 4, 5, 6]]
這樣就輕易的去掉重覆的 list 囉!