Самый простой способ добиться этого (без импорта чего-либо) - отсортировать каждую пару в списке перед добавлением ее в новый список результатов, например:
result = []
for pair in [[4, 1], [1, 4], [0, 5], [5, 0]]:
pair.sort()
if pair not in result:
result.append(pair)
print(result)
Вы можете даже преобразовать это в функцию:
def list_filter(collection):
result = []
for pair in collection:
pair.sort()
if pair not in result:
result.append(pair)
return result
Который вы бы затем использовали следующим образом:
list_filter([[4, 1], [1, 4], [0, 5], [5, 0]])
Который должен возвращать список, который выглядит следующим образом:
[[1, 4], [0, 5]]
Вы можете сделать это еще меньше, используя:
list_filter = lambda collection: list(set([sorted(x) for x in collection]))
Который должен возвращать тот же результат.
РЕДАКТИРОВАТЬ: обновленный метод без сортировки:
(result, collection) = ([], [[4, 1], [1, 4], [0, 5], [5, 0]])
def check(n1, n2):
for pair in collection:
if n1 in pair and n2 in pair and sorted(pair) in collection:
return True
return False
for pair in collection:
pair.sort()
if pair not in result:
result.append(pair)
print(result)
Вы можете даже преобразовать это в функцию:
def new_filter_function(collection):
result = []
def check(n1, n2):
for pair in collection:
if n1 in pair and n2 in pair and ([n1, n2] in collection or [n2, n1] in collection):
return True
return False
for pair in collection:
if pair not in result:
result.append(pair)
return result
Что бы вы потом использовали следующим образом:
new_filter_function([[4, 1], [1, 4], [0, 5], [5, 0]])
Который также должен возвращать список, который выглядит следующим образом:
[[1, 4], [0, 5]]
Удачи.