В вашем коде есть две ошибки.
Сначала вы не вызываете метод list.reverse
, а просто проверяете, находится ли он в list
.
if i.reverse not in a
Второй, list.reverse
переворачивает list
, он не возвращает новый.
>>> l = [1, 2, 3]
>>> output = l.reverse()
>>> print(output)
None
>>> l
[3, 2, 1]
Это означает, что даже вызов метода будет неправильным, поскольку он вернет неправильный результат и мутируйте ваш список a
.
Решение
Обратите внимание, что использование in
против list
требует обхода всего списка.Таким образом, для больших наборов данных лучше использовать set
для поиска в постоянном времени.
a = [[2, 3], [3, 2]]
set_for_lookup = set(map(tuple, a))
new = [i for i in a if tuple(i) not in set_for_lookup]
print(new) # []
Затраты на сборку set
сделают это немного медленнее для небольших списков, но будутзначительно улучшить свой алгоритм для больших данных, переходя от O (n 2 ) к O (n) .