Python: определите, содержится ли несортированный список в «списке списков», независимо от порядка элементов
У меня есть похожий вопрос к этому вопросу:Определить, имеют ли 2 списка одинаковые элементы независимо от порядка?
Какой самый лучший / самый быстрый способ определить, есть ли несортированный списокlist1
содержится в «списке списков»myListOfLists
независимо от порядка элементовlist1
? Моя попытка обернута в функциюdoSomething(...)
который я называю много раз:
def doSomething(myListOfLists, otherInputs):
list1 = []
... # do something here with `otherInputs'
... # which gives `list1' some values
# now only append `list1' to `myListOfLists' if it doesn't already exist
# and if it does exist, remove it
removeFromList = False
for myList in myListOfLists:
if sorted(list1) == sorted(myList):
removeFromList = True
break
if removeFromList:
myListOfLists.remove(list1)
else:
myListOfLists.append(list1)
return myListOfLists
Проблема в том, что мне нужно запустить функциюdoSomething(...)
примерно в 1,0-5 раз. КакmyListOfLists
становится больше с каждым вызовомdoSomething(...)
это становится очень много времени.
РЕДАКТИРОВАТЬ:
Некоторое уточнение задачи. Позвольте мне привести пример желаемого результата здесь:
a = []
doSomething(a, [1,2,3])
>> a = [1,2,3]
Потому что[1,2,3]
не вa
добавляется кa
.
doSomething(a, [3,4,5])
>> a = [[1,2,3], [3,4,5]]
Потому что[3,4,5]
не вa, it is appended to <code>a</code>.
doSomething(a, [1,2,3])
>>[3,4,5]
Потому что[1,2,3]
является вa
, он удален изa
.
РЕДАКТИРОВАТЬ:
Все списки имеют одинаковую длину.