У меня есть метод, который принимает список и возвращает объект:
# input a list, returns an object
def map_to_obj(lst):
a_list = f(lst)
return a_list[0] if a_list else None
Я хочу получить список, который содержит все сопоставленные элементы, которые не являются None
.
Как это:
v_list = [v1, v2, v3, v4]
[map_to_obj(v) for v in v_list if map_to_obj(v)]
Но нехорошо вызывать метод map_to_obj
дважды в понимании списка.
Есть ли способ иметь локальные переменные в списках, чтобы он мог иметь лучшую производительность?
Или компилятор оптимизирует его автоматически?
Вот что я хочу:
(sml like)
[let mapped = map_to_obj(v) in for v in v_list if mapped end]