首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查有序的子列表之间是否有空格

检查有序的子列表之间是否有空格
EN

Stack Overflow用户
提问于 2021-08-04 04:22:58
回答 2查看 44关注 0票数 0

我想检查在给定范围内嵌套列表之间是否有空格。例如

代码语言:javascript
运行
复制
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

到目前为止,我已经获得了给定范围内的子列表

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-04 04:46:34

您可以在相邻对中迭代列表,方法是将列表与自身一起压缩,但偏移量为1,这样您就可以获得可能空格的下界和上界,并测试这些空格是否在给定的范围内:

代码语言:javascript
运行
复制
[
    [low + 1, high - 1]
    for (_, low), (high, _) in zip(ListA, ListA[1:])
    if Range[0] <= low < high <= Range[1]
]

对于给定的样本输入,这将返回:

代码语言:javascript
运行
复制
[[8, 9], [31, 40]]
票数 0
EN

Stack Overflow用户

发布于 2021-08-04 04:31:20

对于整数的情况:

如果您的子列表表示范围,首先对它们进行排序,并统一它们之间的所有重叠。

然后创建一个“空格”列表,列表如下:

代码语言:javascript
运行
复制
[low1, high1], [low2, high2], [low3, high3]

它将是:

代码语言:javascript
运行
复制
[0, low1 - 1], [high1 + 1, low2 - 1], [high2 + 1, low3 - 1], [high3 + 1, inf]

然后取给定范围内的“空格”。

对于浮点数的情况,您可以只采用开放间隔:

代码语言:javascript
运行
复制
[0, low1), (high1, low2), (high2, low3), (high3, inf)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68645365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档