Python: Określ, czy niesortowana lista znajduje się na „liście list”, niezależnie od kolejności elementów
Podobne pytanie mam do tego pytania:Określ, czy 2 listy mają te same elementy, niezależnie od kolejności?
Jaki jest najlepszy / najszybszy sposób określenia, czy lista jest nieposortowanalist1
znajduje się na „liście list”myListOfLists
, niezależnie od kolejności elementówlist1
? Moja próba jest zapełniona funkcjądoSomething(...)
które nazywam wielokrotnie:
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
Problem polega na tym, że muszę uruchomić tę funkcjędoSomething(...)
około 1.0e5 razy. Tak jakmyListOfLists
staje się większy z każdym wezwaniemdoSomething(...)
staje się to bardzo czasochłonne.
EDYTOWAĆ:
Pewne wyjaśnienie zadania. Podam tutaj przykład pożądanego wyjścia:
a = []
doSomething(a, [1,2,3])
>> a = [1,2,3]
Bo[1,2,3]
nie ma wa
, jest dołączony doa
.
doSomething(a, [3,4,5])
>> a = [[1,2,3], [3,4,5]]
Bo[3,4,5]
nie ma wa
, jest dołączony doa
.
doSomething(a, [1,2,3])
>>[3,4,5]
Bo[1,2,3]
jest wa
, jest usuwany za
.
EDYTOWAĆ:
Wszystkie listy mają tę samą długość.