繁体   English   中英

如何检查列表列表中的元素是否具有重叠的数值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM