Estoy buscando 'limpiar' una lista excluyendo cualquier elemento que contenga caracteres distintos de 0-9 y preguntándome si existe una manera más eficiente que, p.La manera más eficiente de eliminar entradas de la lista no numérica
import re
invalid = re.compile('[^0-9]')
ls = ['1a', 'b3', '1']
cleaned = [i for i in ls if not invalid.search(i)]
print cleaned
>> ['1']
Como voy a estar operando en las listas de grandes-ish (5k) artículos de cadenas largas (15 caracteres).
Sí, eso va a hacer muy bien. – urschrei
+1, otra posibilidad sería 'limpiado = filtro (str.isdigit, ls)' – eumiro
@eumiro, cierto, pero eso es menos menos pitónico y también solo funciona para objetos 'str' exactos - @ La solución de MattH funciona para' str ',' unicode', y cualquier otro objeto que tenga un método 'isdigit()' (pato). –