Если у меня есть список кортежей, где каждый кортеж представляет переменные 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
.