Python: Bestimmen Sie, ob eine nicht sortierte Liste in einer 'Liste von Listen' enthalten ist, unabhängig von der Reihenfolge der Elemente
Ich habe eine ähnliche Frage zu dieser Frage:Bestimmen Sie, ob 2 Listen die gleichen Elemente haben, unabhängig von der Reihenfolge?
Was ist der beste / schnellste Weg, um festzustellen, ob eine unsortierte Liste vorliegtlist1
ist in einer 'Liste von Listen' enthaltenmyListOfLists
, unabhängig von der Reihenfolge der Elemente inlist1
? Mein Versuch ist in der Funktion eingewickeltdoSomething(...)
was ich oft nenne:
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
Das Problem dabei ist, dass ich die Funktion ausführen mussdoSomething(...)
ungefähr 1.0e5 mal. WiemyListOfLists
wird mit jedem Aufruf von größerdoSomething(...)
das wird enorm zeitaufwändig.
BEARBEITEN:
Klarstellung der Aufgabe. Lassen Sie mich hier ein Beispiel für die gewünschte Ausgabe geben:
a = []
doSomething(a, [1,2,3])
>> a = [1,2,3]
weil[1,2,3]
ist nicht ina
Es wird angehängta
.
doSomething(a, [3,4,5])
>> a = [[1,2,3], [3,4,5]]
weil[3,4,5]
ist nicht ina
Es wird angehängta
.
doSomething(a, [1,2,3])
>>[3,4,5]
weil[1,2,3]
ist ima
wird entfernt vona
.
BEARBEITEN:
Alle Listen haben die gleiche Länge.