Supponiamo che ho una lista L
di sconosciuti oggetti, O1
a On
, e voglio togliere un altro riferimento all'oggetto M
che può riferirsi a uno dei gli oggetti in L
, sono riuscito a farlo utilizzando:modo più veloce o più idiomatico per rimuovere l'oggetto dalla lista di oggetti in Python
L = [ O1, O2, ... On]
...
L = [ j for j in L if j not in [ M ] ]
che è incantevole e idiomatica ... ma sto avendo a che fare molto, e mi chiedo se non c'è un altro modo più idiomatico , o se non c'è un modo più veloce.
Il punto importante è che l'elenco degli oggetti è sconosciuta, e può o non può includere l'oggetto da escludere. Voglio evitare di estendere o sottoclasse gli oggetti laddove possibile.
La comprensione delle liste sarà il modo più veloce (le comprensioni delle liste sono generalmente più veloci in Python + sarà con O (n) complessità). In una nota a margine, se 'M' è un singolo oggetto, perché dovresti voler fare' j non in [M] '? 'j == M' sarà sicuramente un po 'più veloce in quanto i confronti diretti sono sempre più veloci. –
'prova: L.remove (M) tranne ValueError: pass'? Tuttavia il metodo 'remove' rimuove solo il primo elemento uguale a' M'. – Bakuriu
possono esserci più di una istanza di M nell'elenco? – skrrgwasme