我想检查在给定范围内嵌套列表之间是否有空格。例如
ListA = [[5 , 7] , [10, 30], [41, 51]] ##number of sublists are random
Range = [7, 45] 
Results = "in range of [7,45] you have **two** spaces between sublists **[8,9]**,and **[31,40]**" # output到目前为止,我已经获得了给定范围内的子列表
newListA =[]
    for name in m:
    in_range = [i for i in name if any(low <= i <= high for low, high in newListA)]
    newListA_list.append(in_range)发布于 2021-08-04 04:46:34
您可以在相邻对中迭代列表,方法是将列表与自身一起压缩,但偏移量为1,这样您就可以获得可能空格的下界和上界,并测试这些空格是否在给定的范围内:
[
    [low + 1, high - 1]
    for (_, low), (high, _) in zip(ListA, ListA[1:])
    if Range[0] <= low < high <= Range[1]
]对于给定的样本输入,这将返回:
[[8, 9], [31, 40]]发布于 2021-08-04 04:31:20
对于整数的情况:
如果您的子列表表示范围,首先对它们进行排序,并统一它们之间的所有重叠。
然后创建一个“空格”列表,列表如下:
[low1, high1], [low2, high2], [low3, high3]它将是:
[0, low1 - 1], [high1 + 1, low2 - 1], [high2 + 1, low3 - 1], [high3 + 1, inf]然后取给定范围内的“空格”。
对于浮点数的情况,您可以只采用开放间隔:
[0, low1), (high1, low2), (high2, low3), (high3, inf)https://stackoverflow.com/questions/68645365
复制相似问题