如何在python中找到范围重叠?

发布于 2021-01-31 15:45:00

Python中确定两个范围中的哪些值重叠的最佳方法是什么?

例如:

x = range(1,10)
y = range(8,20)
(The answer I am looking for would be the integers 8 and 9.)

给定一个范围x,最好的方法是迭代另一个范围y并输出两个范围共享的所有值?在此先感谢您的帮助。

编辑:

作为后续,我意识到我还需要知道x是否与y重叠。我正在寻找一种方法来遍历范围列表,并做一些范围重叠的其他事情。是否有简单的True / False语句来完成此操作?

关注者
0
被浏览
311
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    尝试设置交集:

    >>> x = range(1,10)
    >>> y = range(8,20)
    >>> xs = set(x)
    >>> xs.intersection(y)
    set([8, 9])
    

    请注意,intersection接受任何可迭代的参数作为参数(y不需要将其转换为该操作的集合)。有一个等效于该intersection方法的运算符:&但是,在这种情况下,它要求两个参数都必须是set



  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    如果步长始终为+1(这是范围的默认值),则以下步骤应比将每个列表转换为集合或遍历任一列表更为有效:

    range(max(x[0], y[0]), min(x[-1], y[-1])+1)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看