Wie lokale variable in list comprehension?

Habe ich eine Methode, die eine Liste und ein Objekt zurück:

# input a list, returns an object
def map_to_obj(lst):
    a_list = f(lst)
    return a_list[0] if a_list else None

Ich möchte eine Liste, die alle zugeordneten Elemente, die nicht None.

Wie diese:

v_list = [v1, v2, v3, v4]

[map_to_obj(v) for v in v_list if map_to_obj(v)]

Aber es scheint nicht gut zu nennen die map_to_obj - Methode zweimal in der Liste erfassen.

Gibt es eine Möglichkeit, lokale Variablen in der Liste Verstehens, so dass Sie können haben eine bessere Leistung?

Oder weiß der compiler optimiert es automatisch?

Hier ist, was ich will:

(sml like)
[let mapped = map_to_obj(v) in for v in v_list if mapped end] 
InformationsquelleAutor Hao Tan | 2014-10-31
Schreibe einen Kommentar