Python: Determine si una lista sin clasificar está contenida en una 'lista de listas', independientemente del orden de los elementos
Tengo una pregunta similar a esta pregunta:Determine si 2 listas tienen los mismos elementos, independientemente del orden?
¿Cuál es la manera mejor / más rápida de determinar si una lista no clasificada?list1
está contenida en una 'lista de listas'myListOfLists
, independientemente del orden a los elementos enlist1
? Mi intento está envuelto en la funcióndoSomething(...)
que llamo muchas veces:
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
El problema con esto es que necesito ejecutar la funcióndoSomething(...)
aproximadamente 1.0e5 veces. ComomyListOfLists
se hace más grande con cada llamada dedoSomething(...)
esto se vuelve masivamente lento.
EDITAR:
Algunas aclaraciones de la tarea. Déjame dar un ejemplo de la salida deseada aquí:
a = []
doSomething(a, [1,2,3])
>> a = [1,2,3]
Porque[1,2,3]
no está dentroa
, se anexa aa
.
doSomething(a, [3,4,5])
>> a = [[1,2,3], [3,4,5]]
Porque[3,4,5]
no está dentroa
, se anexa aa
.
doSomething(a, [1,2,3])
>>[3,4,5]
Porque[1,2,3]
es ena
, se retira dea
.
EDITAR:
Todas las listas tienen la misma longitud.