Как удалить повторяющиеся комбинации кортежей из списка python? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть список с кортежами, как показано ниже:

mylist = [(1, 2),(1, 3),(2, 1),(2, 3),(3, 1),(3, 2),(3, 3)]

Ожидается (уникальные комбинации)

[(1, 2),(1, 3),(2, 3),(3, 3)]

Я пробовал ниже

mylist = list(set(map(tuple, mylist)))

Но не получил желаемый вывод. Любая помощь здесь?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2020

Вы можете попробовать это.

out=list(set(map(tuple,map(sorted,mylist))))
1 голос
/ 15 февраля 2020

Это потому, что Tuple (1, 2) отличается от Tuple (2, 1)

print((1, 2) == (1, 2))
print((1, 2) == (2, 1))

True
False

Вы можете увидеть это в:

my_set = set()

my_set.add((1, 2))
my_set.add((1, 2))
my_set.add((2, 1))

print(my_set)

{(1, 2), (2, 1)}

Итак, в вашем В этом случае вы можете отсортировать tuples, так что (1, 2) и (2, 1) будут одинаковыми, и набор выполнит вашу работу

mylist = [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2), (3, 3)]

mylist = [sorted(item) for item in mylist]

mylist = list(set(map(tuple, mylist)))

print(mylist)

[(1, 2), (1, 3), (2, 3), (3, 3)]
...