Eliminar elemento de la lista usando la lista de comprensión – Python

Tengo una lista como esta:

['A','B','C'] 

Lo que necesito es eliminar un elemento según la entrada que obtuve en la función. Por ejemplo, si decido quitar A, debería regresar:

 ['B','C'] 

Lo intenté sin éxito

 list = ['A','B','C'] [var for var in list if list[var] != 'A'] 

¿Cómo puedo hacerlo? Gracias

Simple lst.remove('A') funcionará:

 >>> lst = ['A','B','C'] >>> lst.remove('A') ['B', 'C'] 

Sin embargo, una llamada a .remove solo elimina la primera aparición de 'A' en una lista. Para eliminar todos 'A' valores 'A' puedes usar un bucle:

 for x in range(lst.count('A')): lst.remove('A') 

Si insistes en usar la lista de comprensión puedes usar

 >>> [x for x in lst if x != 'A'] ['B', 'C'] 

Lo anterior eliminará todos los elementos iguales a 'A' .

La mejora de su código (que es casi correcta) sería:

 list = ['A','B','C'] [var for var in list if var != 'A'] 

Sin embargo, el enfoque de @frostnational es mejor para valores individuales.

Si va a tener una lista de valores para rechazar, puede hacerlo como:

 list = ['A','B','C', 'D'] not_allowed = ['A', 'B'] [var for var in list if var not in not_allowed] 

Usted puede simplemente utilizar el método de remove de la lista. Simplemente haga list.remove('A') y se eliminará.

Si tiene el índice del elemento que desea eliminar, use el método pop . list.pop(0) .

Si no está seguro de si el elemento existe o no, es posible que desee comprobar antes de eliminar:

 if 'A' in lst: lst.remove('A') 

Encuentra este código simplificado:

 list1 = [12,24,35,24,88,120,155] while 24 in list1: list1.remove(24) print(list1) 

¡La mejor de las suertes!