如何从目标列表中移除与忽略列表元素差值在±8范围的元素?
坐标列表过滤方案
需求概述
- 目标坐标列表:
target_list = [(929, 412),(1007, 281),(762, 176)] - 忽略坐标列表:
ignored_list = [(123,848),(928, 407)] - 核心规则:移除目标列表中与忽略列表内任意点的x、y坐标差值均在±8范围内的元素
实现逻辑
对目标列表中的每个坐标点,逐一检查忽略列表的所有点:只有当该目标点与所有忽略点的x差绝对值>8 或 y差绝对值>8时,才将其保留到结果中(反之则移除)。
Python代码实现
target_list = [(929, 412), (1007, 281), (762, 176)] ignored_list = [(123, 848), (928, 407)] # 列表推导式实现过滤 filtered_list = [ point for point in target_list if all( abs(point[0] - ig[0]) > 8 or abs(point[1] - ig[1]) > 8 for ig in ignored_list ) ] print(filtered_list) # 输出结果: [(1007, 281), (762, 176)]
结果说明
- 目标点
(929, 412)与忽略点(928, 407)的x差1、y差5,均在±8范围内,符合移除条件 - 剩余两个点与忽略列表中所有点的坐标差均超出±8范围,因此被保留
内容的提问来源于stack exchange,提问作者granatapfell
相关产品推荐
相关产品推荐

