¿Cómo eliminar un elemento de una lista anidada?

Si tengo una lista anidada como:

m=[[34,345,232],[23,343,342]] 

si escribo m.remove(345) un mensaje de error que dice que el elemento no está en la lista.

Quiero saber cómo eliminar un elemento de la lista anidada, fácilmente.

No hay atajo para esto. Debe eliminar el valor de cada lista anidada en la lista de contenedores:

 for L in m: try: L.remove(345) except ValueError: pass 

Si desea un comportamiento similar como list.remove , use algo como lo siguiente:

 def remove_nested(L, x): for S in L: try: S.remove(x) except ValueError: pass else: break # Value was found and removed else: raise ValueError("remove_nested(L, x): x not in nested list") 
 In [5]: m=[[34,345,232],[23,343,342]] In [7]: [[ subelt for subelt in elt if subelt != 345 ] for elt in m] Out[7]: [[34, 232], [23, 343, 342]] 

Tenga en cuenta que remove(345) solo elimina la primera aparición de 345 (si existe). El código anterior elimina todas las apariciones de 345.

 i=0 for item in nodes: for itm in item: m=database_index[itm] print m if m[1]=='text0526' or m[1]=='text0194' or m[1]=='phone0526' or m[1]=='phone0194': nodes[i].remove(itm) i+=1 

esta es la forma en que resolví mi problema usando una variable i para guardar el nivel anterior de la lista anidada.

Si tiene más de un nivel nested, esto podría ayudar

 def nested_remove(L, x): if x in L: L.remove(x) else: for element in L: if type(element) is list: nested_remove(element, x) >>> m=[[34,345,232],[23,343,342]] >>> nested_remove(m, 345) >>> m [[34, 232], [23, 343, 342]] >>> m=[[34,[345,56,78],232],[23,343,342]] >>> nested_remove(m, 345) >>> m [[34, [56, 78], 232], [23, 343, 342]]