Tengo una lista de nombres de archivos de bibliotecas que necesito filtrar contra expresiones regulares y luego extraigo el número de versión de aquellos que coinciden. Esta es la manera obvia de hacerlo:Filtrado y transformación de listas de Python
libs = ['libIce.so.33', 'libIce.so.3.3.1', 'libIce.so.32', 'libIce.so.3.2.0']
versions = []
regex = re.compile('libIce.so\.([0-9]+\.[0-9]+\.[0-9]+)')
for l in libs:
m = regex.match(l)
if m:
versions.append(m.group(1))
que produce la siguiente lista:
['3.3.1', '3.2.0']
sin embargo siento que bucle no es muy 'estilo de Python' y sentir que debería ser posible reemplazar ' para 'bucle de arriba con un inteligente de una sola línea. Sugerencias?
Gracias por ambos 'findall' y 'sum'! En cuanto a la legibilidad, ya está acostumbrado a él con todos los algoritmos stl y boost :) –
por alguna razón, este tiene mucho más sentido para mí que la respuesta aceptada/upvoted. –