如何以更Pythonic的方式实现元组区间交叉判断(一行且不导库)?
更Pythonic的区间交叉判断实现
你可以通过反向判断不交叉的情况来实现更简洁、符合Python风格的一行代码,逻辑直观且减少冗余条件:
def are_values_crossed(tuple_1, tuple_2): return not (tuple_1[1] < tuple_2[0] or tuple_2[1] < tuple_1[0]) tuple_1 = (5, 17) tuple_2 = (4, 13) print(are_values_crossed(tuple_1, tuple_2)) # 输出 True
为什么这更Pythonic?
- 逻辑简洁:两个区间不交叉的唯一情况是其中一个完全位于另一个左侧(
tuple_1右端小于tuple_2左端,或反之),取反后就是存在交叉的情况,避免了原代码中重复的端点检查。 - 可读性强:一眼就能理解判断逻辑,契合Python「简洁直观」的设计哲学。
- 一行核心逻辑:函数体仅需一行即可完成判断,满足你要求的一行代码实现。
如果想把函数写成更紧凑的lambda形式,也可以这样:
are_values_crossed = lambda t1, t2: not (t1[1] < t2[0] or t2[1] < t1[0])
内容的提问来源于stack exchange,提问作者Utopion
相关产品推荐
相关产品推荐

