首页 > 解决方案 > 在列表列表中查找重复列表?

问题描述

我有一个列表列表,如下所示:

data = [[4,5,0],[3,4,0],[4,5,0],[1,2,0],[1,2,0],[4,5,0],[3,4,0],[2,3,0]]

我想要的是返回一个唯一列表的列表(顺序无关紧要):

unique_data =[[4,5,0],[3,4,0],[1,2,0],[2,3,0]]

我的第一个想法是:

for x,y in zip(data, data[1:])):
        if x == y:
               unique_data.append(x)

但这只会比较两个直接相邻的列表。非常感谢任何其他想法。谢谢你。

标签: python

解决方案


您可以做的一件事是将列表转换为元组(因为元组是可散列的并且可以放入 a 中set),然后将其转换为一个集合以过滤掉重复项,然后再返回。

data = [[4,5,0],[3,4,0],[4,5,0],[1,2,0],[1,2,0],[4,5,0],[3,4,0],[2,3,0]]

unique_data = [list(tup) for tup in set(tuple(lst) for lst in data)]
# [[2, 3, 0], [3, 4, 0], [4, 5, 0], [1, 2, 0]]

推荐阅读