Как преобразовать список списков в набор

Рейтинг: 0Ответов: 1Опубликовано: 12.02.2023

Три елемента неодинаковые в сумме должны давать ноль и записываються как список в список и мне нужно чтобы эти наборы из слагаемых с помощью сэта были уникальными.Но я не против узнать о других методах проверки списка списков на уникальность.Т.е. (1,0,-1)и (0,1,-1)не должен попасть в результат

num=[-1,0,1,2,-1,-4]
num1=[]
num2=[]
for i in range(len(num)):
    for j in range(len(num)):
        for k in range(len(num)):
            if i!=j and j!=k and i!=k :
                if num[i]+num[j]+num[k]==0 and i<j<k:
                    num1.clear()
                    num1.append(num[i])
                    num1.append(num[j])
                    num1.append(num[k])
                    num2.append(list(num1))

num2=set(num2)
print(num2)

Ответы

▲ 0Принят

Можно просто отсортировать каждый список и преобразовать в кортеж для возможности последующего создания сета

num = [-1, 0, 1, 2, -1, -4]
num1 = []
num2 = []
for i in range(len(num)):
    for j in range(len(num)):
        for k in range(len(num)):
            if i != j and j != k and i != k:
                if num[i] + num[j] + num[k] == 0 and i < j < k:
                    num2.append(tuple(sorted([num[i], num[j], num[k]])))

num2 = set(num2)
print(num2)
{(-1, 0, 1), (-1, -1, 2)}