2013-03-12 4 views
2

Любая помощь с этим вопросом оценивается.Удаление перестановок из списка кортежей

У меня есть список кортежей

a = [(1,2), (2,1), (1,3), (1,4), (4,1)] 

и мне нужно удалить дубликаты определенного типа: (1,2) и (2,1) считаются дубликатами в соответствии с моим определением. Требуемая мощность

a = [(1,2), (1,3), (1,4)] 

Заранее спасибо

ответ

3

Вы можете сортировать их и затем удалить дубликаты set():

>>> set(tuple(sorted(l)) for l in a) 
    set([(1, 2), (1, 3), (1, 4)]) 
+0

Первый подход не будет работать. (1,1) является кортежем, но он станет frozenset ([1]). Однако работает второй подход. –

+0

@DmitryRubanovich: '(1, 1)' - тождественная перестановка, поэтому '(1, 1)' и '(1,)' или 'frozenset ([1])' эквивалентны. – Blender

+0

он не сказал, что кортежи сами были перестановками. Он только сказал, что хочет удалить кортежи, которые были перестановками других кортежей, присутствующих в списке. Удаление (1,1) и подстановка его (1) не сделало бы этого. –

Смежные вопросы