pcwu's TIL Notes


[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 囉!

Reference