2012-05-15 18 views
5

¿Cómo puedo escribir el siguiente código de manera más concisa?manera pitónica y concisa para construir esta lista?

scores = [] 
    for f in glob.glob(path): 
     score = read_score(f, Normalize = True) 
     scores.append(score) 

Sé que esto puede ser escrito en una o dos líneas sin usar append, pero yo soy un novato Python.

+4

'puntajes = [read_score (f, Normalizar = Verdadero) para f en glob.glob (ruta)]' - es una lista por comprensión que hace exactamente el mismo modelo. – birryree

+0

Ese es el escenario de uso clásico para [comprensiones de lista] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions). –

+0

Pregunta de seguimiento rápido: ¿Qué sucede si quiero ordenar la lista de archivos que se repite glob? No devuelve directamente una lista sino un iterable, por lo que llamar a glob.glob (ruta) .sort() genera un error. ¿Todavía se puede hacer en una línea? – Frank

Respuesta

7

Ah, lo tengo al navegar por un related question:

scores = [read_score(f, normalize=True) for f in glob.glob(path)] 
+1

uso: 'ordenados (glob.glob (ruta))' – fraxel

Cuestiones relacionadas