python迭代列表

时间:2011-05-05 11:56:12

标签: python list loops

考虑以下列表

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最接近uresult[2]我们也使用'i'而不是'z' result[3]我们使用'z'。如何概括这个? (过滤器是固定的,但值中的项目不断变化。)我想得到的是一个带有两个过滤器的元组,(filter_missing_a_value_in_results,filter_to_used_to_computer_the_missing_value)

1 个答案:

答案 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)