如何实现列表元素两两对比并排除自身匹配?(纬度值场景)
解决纬度值匹配问题
原代码存在两个问题:
- 未排除元素与自身匹配的情况
- 条件误用了
0.1作为差值范围,而需求是0.01
基础修正版(保留双向匹配)
以下代码排除自身匹配,同时修正差值范围:
lats = [79.826, 79.823, 79.855, 79.809] # 遍历元素的索引与对应值 for i_idx, i_val in enumerate(lats): for j_idx, j_val in enumerate(lats): # 跳过自身,判断差值是否在0.01范围内 if i_idx != j_idx and abs(i_val - j_val) <= 0.01: print(f"{i_val} and {j_val}")
输出结果:
79.826 and 79.823 79.823 and 79.826
进阶去重版(只保留单向组合)
如果不想重复输出A and B和B and A这类双向组合,可以调整内层循环的起始索引:
lats = [79.826, 79.823, 79.855, 79.809] for i_idx, i_val in enumerate(lats): # 只对比当前元素之后的元素 for j_idx in range(i_idx + 1, len(lats)): j_val = lats[j_idx] if abs(i_val - j_val) <= 0.01: print(f"{i_val} and {j_val}")
输出结果:
79.826 and 79.823
内容的提问来源于stack exchange,提问作者PythonN00b
相关产品推荐
相关产品推荐

