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