Рассмотрим приведенные ниже списки
filters= [u, i, g, r, z]
result = [None, 34, None, None, 45]
элементы в result
вычисляются для каждого фильтра в filters
. Бывает, что фильтры u, g, z
не вернули никаких результатов. Поэтому я хотел бы повторно вычислить значения result[0], result[2], result[4],
, используя фильтры, возвращающие значения.
Моя проблема заключается в повторении обоих списков и использовании фильтра шкафа для вычисления значения, отсутствующего в результате.
например, result[0]
следует вычислять с использованием 'i'
(i
ближе всего к u
) result[2]
, мы также используем 'i'
not 'z'
и result[3]
, мы используем 'z'
. Как обобщить это? (фильтры фиксированы, но элементы в значениях меняются.) Я бы хотел получить кортеж с двумя фильтрами (filter_missing_a_value_in_results, filter_to_used_to_computer_the_missing_value)
Не особенно эффективное решение:
def filters_by_distance(i):
'''Generate filters by distance from i'''
sorted_indices = sorted(range(len(filters)), key=lambda j: abs(j-i))
return (filters[j] for j in sorted_indices)
result[2]
если заполнитьresult[3]
?