【发布时间】:2019-10-24 06:58:36
【问题描述】:
我需要将重叠的数字范围合并为单个范围。所以我有一个包含类似子列表的列表:
[[83,77],[103,97],[82,76],[101,95],[78,72],[97,91],[72,66],[89,83],[63,57],[78,72],[53,47],[65,59],[41,35],[50,44],[28,22],[34,28],[14,8],[16,10]]
因此,从 83 到 77 与 82 到 76 重叠,并将变为 76 到 83。如果任何其他范围与此范围重叠,则将其最小值和最大值添加到此范围,并且当没有其他重叠时,该方法应转到列表中的下一个并尝试将其与它的重叠合并。
我认为这是有道理的。
【问题讨论】:
-
添加*最小值或最大值*
-
请发布您期望的输出以及您当前的尝试。
-
我是 python 新手,在这个问题上坐了很长时间,因为我无法围绕逻辑思考。我没有尝试,这就是为什么我首先寻求帮助。我还描述了我期望的输出。提前感谢您的理解。
-
你只说“会变成76到83”。这是否意味着您的输出应该是
[[76, 83], ...]?原始数据对是否总是按降序排列,您是否希望结果对按升序排列? -
首先,感谢您的反应!是的,它优化/压缩列表以便合并重叠的范围。所以这两个将成为一个,如果与它们有任何其他重叠也将被添加,因此 3 个子列表将变为 1。未指定列表的顺序,因此它可以是降序或升序。
标签: python numbers range overlap