python遍历列表

python遍历列表,python,list,loops,Python,List,Loops,考虑下面的列表 filters= [u, i, g, r, z] result = [None, 34, None, None, 45] 结果中的项目是针对过滤器中的每个过滤器计算的。碰巧过滤器,u,g,z没有返回任何结果。因此,我想使用返回值的过滤器重新计算result[0]、result[2]、result[4]、的值 我的问题是遍历这两个列表,并使用壁橱过滤器计算结果中缺少的值。 e、 g结果[0]应使用'i'(i最接近u)结果[2]我们也使用'i'而不是'z'和结果

考虑下面的列表

filters= [u,    i,  g,    r,    z]
result = [None, 34, None, None, 45]
结果
中的项目是针对
过滤器
中的每个过滤器计算的。碰巧过滤器,
u,g,z
没有返回任何结果。因此,我想使用返回值的过滤器重新计算
result[0]、result[2]、result[4]、
的值

我的问题是遍历这两个列表,并使用壁橱过滤器计算结果中缺少的值。
e、 g
结果[0]
应使用
'i'
i
最接近
u
结果[2]
我们也使用
'i'
而不是
'z'
结果[3]
我们使用
'z'
。如何概括这一点??(过滤器是固定的,但值中的项目不断变化。)我想要得到的是一个包含两个过滤器的元组,(结果中的过滤器缺少值,使用的过滤器缺少值)

不是特别有效的解决方案:

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)

不是特别有效的解决方案:

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[3]
,那么
result[2]
会发生什么情况?任何最接近的过滤器都可以使用之前或之后的过滤器,而不能使用“before或after”。您需要定义您的行为。After是最佳选项-但如果最后一个值未知,则可以使用before。如果填充了
result[3]
,则
result[2]
会发生什么情况?任何最接近的筛选器都可以使用之前或之后的筛选器,您不能使用“before或After”。您需要定义您的行为。After是最佳选项,但如果最后一个值未知,则可以使用before