如何删除嵌套列表中的重复项?

时间:2019-01-14 05:46:32

标签: python python-3.x list

我想从嵌套列表中删除重复项和置换项。

输入:

[[-1, 0, 1], [-1, 1, 0], [-1, 2, -1], [-1, 2, -1], [-1, -1, 2]]

预期输出:

[[-1, 0, 1], [-1, 2, -1]]

我尝试使用列表理解,但最终输出为

[[-1, 1, 0], [-1, 2, -1], [-1, 0, 1], [-1, -1, 2]]

这是我的尝试。

a = [[-1, 0, 1], [-1, 1, 0], [-1, 2, -1], [-1, 2, -1], [-1, -1, 2]]
b_set = set(tuple(x) for x in a)
b = [ list(x) for x in b_set ]
print(b)

2 个答案:

答案 0 :(得分:4)

预期结果是因为[-1, 0, 1] != [-1, 1, 0]。如果要确保内部元组被认为相等,可以对其进行排序:

b_set = set(tuple(sorted(x)) for x in a)

答案 1 :(得分:1)

或使用map

b_set = set(map(lambda x: tuple(sorted(x)),a))