Python - 确定3个范围的重叠

use*_*321 2 python range overlap

我有一个问题,关于如何在不使用任何现有库的情况下确定Python中三个范围的重叠:

例如,如果我有三个范围为(10,20)(15,25)(18,30),我应该如何找到它们之间的重叠?

我的回答应该是(18,19,20)

任何帮助将非常感激.谢谢 !

Rei*_*ica 8

重叠从最高起点到最低点:

ranges = [(10,20), (15,25), (18,30)]
starts, ends = zip(*ranges)
result = range(max(starts), min(ends) + 1)
Run Code Online (Sandbox Code Playgroud)

测试:

>>> print(*result)
18 19 20
Run Code Online (Sandbox Code Playgroud)