考虑以下列表
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'
而不是'z'
result[3]
我们使用'z'
。如何概括这个? (过滤器是固定的,但值中的项目不断变化。)我想得到的是一个带有两个过滤器的元组,(filter_missing_a_value_in_results,filter_to_used_to_computer_the_missing_value)
答案 0 :(得分:1)
不是特别有效的解决方案:
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)