Ваша логика не совсем верна - вы хотите добавить что-то в список, только когда его еще нет. Вот как это сделать, используя параметр option else
цикла for
, который будет выполняться только в том случае, если break
никогда не выполняется. Как это работает, описано в документе оператора for
.
my_list = []
for p in [1,2,3], [3,2,1], [4,5,6]:
for c in my_list:
if set(p) == set(c):
break
else:
my_list.append(p)
print(my_list) # -> [[1, 2, 3], [4, 5, 6]]
Также неэффективно преобразовывать каждую комбинацию в set
более одного раза, поэтому вы можете вывести эту часть из цикла:
my_list = []
for p in [1,2,3], [3,2,1], [4,5,6]:
set_p = set(p) # do this here
for c in my_list:
if set_p == set(c):
break
else:
my_list.append(p)