вы можете попробовать использовать набор кортежей и
gamma2 = [[('p', 'u'), ('r', 'w')], [('p', 'w'), ('r', 'u')], [('r', 'u'), ('p', 'w')],[('r', 'w'), ('p', 'u')]]
set([tuple(set(x)) for x in gamma2])
для некоторых случаев будет лучше использовать sorted
вместо set
(спасибо @rockikz)
set([tuple(sorted(x)) for x in gamma2])
и третье решение заключается в использовании frozenset
set([frozenset(x) for x in gamma2])
даст вам результат:
{(('p', 'w'), ('r', 'u')), (('r', 'w'), ('p', 'u'))}
set - список уникальных значений
- набор внутри цикла - нужно привести элементы, чтобы они были равны
- следующий набор кортежей используется только в качестве сахара для создания внешнего набора
- и последний набор, который мы используем для получения уникальных значений
и если вам нужен тот же тип в результате, вы можете сделать это:
[list(y) for y in set([tuple(set(x)) for x in gamma2])]
даст вам
[[('r', 'w'), ('p', 'u')], [('p', 'w'), ('r', 'u')]]