2012-05-15 10 views
5

Jak napisać poniższy kod bardziej zwięźle?Python i zwięzły sposób na skonstruowanie tej listy?

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

Wiem, że to może być napisany w jednym lub dwóch wierszach bez użycia append, ale jestem nowicjuszem Python.

+4

'zdobywa bramke = [read_score (f, normalizacja = True) do f w glob.glob (path)]' - To lista zrozumienia, że ​​robi dokładnie ten sam model. – birryree

+0

To jest klasyczny scenariusz użycia [listy zrozumień] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions). –

+0

Szybkie pytanie uzupełniające: Co zrobić, jeśli chcę posortować listę plików, które są przetwarzane globalnie? Nie zwraca bezpośrednio listy, ale jest iterowalna, więc wywołanie glob.glob (path) .sort() daje błąd. Czy nadal można to zrobić w jednym wierszu? – Frank

Odpowiedz

7

Och, mam go podczas przeglądania related question:

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

użyj: 'posortowane (glob.glob (ścieżka))' – fraxel

Powiązane problemy