2012-05-15 13 views
5

Come posso scrivere il seguente codice in modo più conciso?Modo pitonico e conciso per costruire questa lista?

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

So che questo può essere scritto in una o due righe senza utilizzare append, ma io sono un newbie Python.

+4

'punteggi = [read_score (f, normalizzare = True) for f in glob.glob (percorso)]' - è una lista di comprensione che fa esattamente lo stesso modello. – birryree

+0

Questo è lo scenario di utilizzo classico per [list comprehensions] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions). –

+0

Domanda di follow-up rapido: cosa succede se voglio ordinare l'elenco dei file su cui gira il glob? Non restituisce direttamente una lista ma un iterabile, quindi chiamare glob.glob (path) .sort() dà un errore. Può ancora essere fatto in una riga? – Frank

risposta

7

Oh, ho capito durante la navigazione un related question:

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

usa: 'ordinato (glob.glob (percorso))' – fraxel

Problemi correlati