我想从嵌套列表中删除重复项和置换项。
输入:
[[-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)
答案 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))