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语句来完成此操作?
尝试设置交集:
>>> x = range(1,10) >>> y = range(8,20) >>> xs = set(x) >>> xs.intersection(y) set([8, 9])
请注意,intersection接受任何可迭代的参数作为参数(y不需要将其转换为该操作的集合)。有一个等效于该intersection方法的运算符:&但是,在这种情况下,它要求两个参数都必须是set 。
intersection
y
&
如果步长始终为+1(这是范围的默认值),则以下步骤应比将每个列表转换为集合或遍历任一列表更为有效:
range(max(x[0], y[0]), min(x[-1], y[-1])+1)