我得到了如下列表:
list_1 = [[3, 0], [0, 3], [3, 4]]
我正在尝试过滤掉这里的交换元素。例如,[3,0]
和[0,3]
是相同的,我只需要保留其中一个。我尝试将其转换为一组,但没有帮助。我也试过迭代,但它造成了真正的开销。是否有任何Pythonic方法可以做到这一点?
感谢。
答案 0 :(得分:4)
例如,您可以使用dict理解:
>>> {tuple(sorted(t)): t for t in list_1}.values()
[[0, 3], [3, 4]]
答案 1 :(得分:1)
您可以使用一组frozensets进行过滤。
如果订单无关紧要:
>>> map(list, set(frozenset(t) for t in list_1))
[[3, 4], [0, 3]]
保留订单:
list_1 = [[3, 0], [0, 3], [3, 4]]
seen = set()
filtered = []
for item in list_1:
item_set = frozenset(item)
if item_set not in seen:
filtered.append(item)
seen.add(item_set)
结果:
>>> filtered
[[3, 0], [3, 4]]