如果我有一个元组列表,其中每个元组代表变量、a
和b
,c
如何消除冗余元组?
冗余元组是那些简单a
地b
互换,但c
相同的元组。所以对于这个例子:
tups = [(30, 40, 50), (40, 30, 50), (20, 48, 52), (48, 20, 52)]
我的最终名单应该只包含一半的条目。一种可能的输出:
tups = [(30, 40, 50), (20, 48, 52)]
其他
tups = [(40, 30, 50), (20, 48, 52)]
等等
有没有一种简单的 Pythonic 方法可以做到这一点?
我尝试使用集合,但(30, 40, 50)
与 不同(40, 30, 50)
,但对我来说这些是多余的,我只想保留其中一个(没关系,但如果我可以选择,我更喜欢低价值订单) . 如果有办法对元组的前 2 个元素进行排序,那么使用集合就可以了。
我确信我可以拼凑出一个可行的解决方案(也许将元组转换为列表作为中间步骤),但我只是想看看是否有一种我不熟悉的简单而明显的方法来做到这一点。
PS:这个问题部分是由PE #39引起的。但即使抛开这个 PE 问题,我现在也很好奇如何轻松地(或是否)做到这一点。
编辑:
只是为那些不熟悉 PE #39 - 的人提供一些背景信息 - a
, b
, 并c
表示直角三角形的边,所以我正在检查 if a**2 + b**2 == c**2
,清楚的顺序a
和b
无关紧要。