首页 > 解决方案 > [[a,b], [b,a], [c,d], [d,c]] 等第二对删除

问题描述

如果我有一个列表,例如

[[a,b], [b,a], [c,d], [d,c]]

但是如果字母对列表不相邻,我如何遍历列表并最终只得到一个字母对?

标签: python

解决方案


如果您不关心订单,那么最简单的方法是使用setsfreezesets

lst = [[a,b], [b,a], [c,d], [d,c]] 
result =  [list(x) for x in {frozenset(t) for t in lst}]

# result output: [[a,b], [c,d]]

由于frozenset([a,b]) == frozenset([b,a]),集合推导{frozenset(t) for t in lst}将只包含每对一次。外部列表推导将frozensets 集合转换回列表列表。


推荐阅读