【发布时间】:2020-08-05 15:51:06
【问题描述】:
我有一个包含范围信息的随机长度列表:
list = [
[[7, 12], [6, 12], [38, 44], [25, 30], [25, 29]],
[[0, 5], [1, 5], [2, 5], [12, 16], [13, 16], [20, 23], [29, 33], [30, 33]],
[[5, 7], [6, 8], [7, 9], [8, 10], [9, 11], [10, 12], [16, 18], [17, 19], [18, 20], [23, 25], [24, 26], [25, 27], [26, 28], [27, 29], [33, 35], [34, 36], [35, 37], [36, 38], [37, 39], [38, 40], [39, 41], [40, 42], [41, 43], [42, 44]]
]
例如,第一个元素 [[7, 12], [6, 12], [38, 44], [25, 30]] 包含 4 个范围 7-12、6-12、38-44 和 25-30 等。
我需要找到长度给定列表长度的所有可能的链(链是连续范围的数组,其中第一个范围的结束 == 下一个范围的开始),因为我可以而且应该只从每个范围中取一个范围按行的确切顺序排列。
因此,对于此示例列表:
链条将是
[[6, 12], [12, 16], [16, 18]],
[[7, 12], [12, 16], [16, 18]],
[[25, 30], [30, 33], [33, 35]]
和[[25, 29], [29, 33], [33, 35]]
现在我被困在处理超过三个长度的列表,无法提出递归解决方案。
【问题讨论】:
-
你说你被卡住了,但你还没有分享你当前的代码。请发布您到目前为止所获得的信息。
-
@josh 我不认为列表可以展平,因为“应该只从每行中按行的确切顺序取一个范围”。
-
[[25, 30], [29, 33], [33, 35]][25,30]的结尾不等于[29,33]的开头 -
如果你只有三个“行”,那么你最长的链只能是长度 3,对吗?
-
此外,强烈建议不要使用 builtin 名称作为标识符名称 (
list)。
标签: python algorithm numpy scipy