устранение лишних кортежей

Если у меня есть список кортежей, где каждый кортеж представляет переменные 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представляют стороны прямоугольного треугольника, поэтому я проверяю, не имеет ли значение a**2 + b**2 == c**2, порядок aи b.

5
задан Levon 28 July 2012 в 23:31
поделиться