[英]How to check if the elements within a list of lists have overlapping numerical values
我正在处理一个列表列表,其中一些项目具有重叠的值。
list=[[7, 11, 'Feature01'],
[2, 6, 'Feature02'],
[31, 59, 'Feature03'],
[31, 41, 'Feature04'],
[20, 40, 'Feature05'],
[25, 30, 'Feature06']
例如,在以下项目中,Feature04 位于 Feature03 坐标内。
[31, 59, 'Feature03'], [31, 41, 'Feature04'],
同样在下面的示例中,Feature06 位于 Feature05 坐标内。
[20, 40, 'Feature05'], [25, 30, 'Feature06']
我想在这种重叠场景中只保留一个项目并更新原始/主列表列表以保存非重叠列表项。
我发现几乎类似的问题,但无法让它发挥作用。
按区间的起点对列表进行排序,根据区间的端点进行平局(按降序排列)。 然后,如果最近添加的间隔不包含结果,则添加一个间隔:
lst.sort(key=lambda x: (x[0], -x[1]))
result = [lst[0]]
for entry in lst[1:]:
current_start, current_end, _ = entry
last_start, last_end, _ = result[-1]
if not (last_start <= current_start <= current_end <= last_end):
result.append(entry)
print(result)
这输出:
[[2, 6, 'Feature02'], [7, 11, 'Feature01'], [20, 40, 'Feature05'], [31, 59, 'Feature03']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.