Python如何找出嵌套列表中不存在于另一列表的向量元素
实现方案
你提到list2的索引0、1元素都属于list1的包含范围,说明需要兼容浮点数精度误差,不能直接做精确相等判断,以下是适配需求的实现:
带浮点容差的筛选代码
list1 = [[-27.1785, -20.7318, -40.724]] list2 = [[-27.1785, -20.7318, -40.724], [-27.1786, -20.7318, -40.724], [27.1786, -20.7318, -40.724]] # 可根据实际精度需求调整容差值 tolerance = 1e-4 result = [] for vec in list2: in_range = False for ref in list1: # 两个向量所有维度差值都在容差范围内时,判定为属于包含范围 if all(abs(x - y) < tolerance for x, y in zip(vec, ref)): in_range = True break if not in_range: result.append(vec) # 输出结果 print(result[0]) # 运行输出:[27.1786, -20.7318, -40.724]
扩展:精确匹配场景(仅作参考)
如果是要求数值完全相等的场景,可以将列表转为可哈希的元组,用集合做快速查找:
list1 = [[-27.1785, -20.7318, -40.724]] list2 = [[-27.1785, -20.7318, -40.724], [-27.1786, -20.7318, -40.724], [27.1786, -20.7318, -40.724]] ref_set = set(tuple(v) for v in list1) result = [v for v in list2 if tuple(v) not in ref_set]
内容的提问来源于stack exchange,提问作者pekkuskär
相关产品推荐
相关产品推荐

