我有一个列表如下:
animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse'],['fox','monkey', 'zebra']]
删除重复列表的最佳方法是什么?使用上面的例子,我正在寻找可以产生这个的代码:
uniq_animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse']]
我首先想到我可以使用set()
,但这似乎不适用于列表列表。我还看到了使用itertools
的示例,但代码对我来说并不完全清楚。谢谢你的帮助!
答案 0 :(得分:16)
uniq_animal_groups = set(map(tuple, animal_groups))
会做到这一点,但你最终会得到一组元组而不是一组列表。 (当然你可以将它转换回列表列表,但除非有特定的理由这样做,为什么要这么麻烦?)
答案 1 :(得分:5)
将列表转换为元组,然后将它们放入集合中。
本质:
uniq_animal_groups = set(map(tuple, animal_groups))
如果您希望结果是列表列表,请尝试:
uniq_animal_groups = [list(t) for t in set(map(tuple, animal_groups))]
或:
uniq_animal_groups = map(list, set(map(tuple, animal_groups)))
答案 2 :(得分:0)
如果您不关心内部列表的排序,请先将所有内容转换为设置:
uniq_animal_groups = map(list, set(map(tuple, map(set, animal_groups))))