2012-02-04 9 views
5

Tengo una lista donde guardo los objetos creados por una clase específica.OOP python: eliminación de la instancia de clase de una lista

Me gustaría saber, porque no puedo resolver este problema, ¿cómo elimino una instancia de la clase de la lista?

Esto debería suceder basado en conocer un atributo del objeto.

+1

La próxima vez que se debería agregar un ejemplo del código que no puede utilizar, también aceptar la respuesta que más le ayudó a resolver el problema y votar los útiles. –

+0

Bien, gracias. :) –

+0

De nada, es posible que también desee seguir algunos de los consejos de esta [Guía de estilo para preguntas y respuestas] (http://meta.stackexchange.com/a/18616/177799). Una mejor pregunta conduce a mejores respuestas. –

Respuesta

11

Iterar a través de la lista, encontrar el objeto y su posición, y luego eliminarla:

for i, o in enumerate(obj_list): 
    if o.attr == known_value: 
     del obj_list[i] 
     break 
+1

Hay un error tipográfico: '=' en lugar de '=='. –

+0

@RikPoggi Gracias. Corregido. – WolframH

3

se puede utilizar una lista por comprensión:

thelist = [item for item in thelist if item.attribute != somevalue] 

Esto eliminará todos los artículos con item.attribute == somevalue.

Si desea eliminar solo uno dicho artículo, utilice WolframH's solution.

+0

El uso de la función 'filter' también funcionaría, ¿verdad? – Divya

+0

Un filtro funcionaría como la lista de comprensión, pero normalmente llamar 'filter' es más lento que una lista de comprensión. – unutbu

1

Se podría haberlos almacenado en un diccionario y los quitó por su nombre

di = {"test" : my_instance()} 
del di['test'] 
Cuestiones relacionadas