为什么 Python 的 Range 要设计成左闭右开?

一般来说:表示 2,3,...,12 这一串自然数有以下四种方法:

a)2 ≤ i < 13

b)1 < i ≤ 12

c)2 ≤ i ≤ 12

d)1 < i < 13

先说下原因有5点:

  • Mesa(参考文献1)实际应用效果,第一种好;
  • a,b前两种上下边界之和刚好等于数列长度;
  • 表示相邻数列时,前数列的上边界与后边界的下边界相等 ([2,13) 与 [13,15) 相邻或(1,12]和(12,15]))
  • 如果采用b,那在表示自然数时会不自然起来,因为最小的自然数是零,要表示从零开始的数,下边界的数就得是-1,(-1,5] 与第一种方法的 [0,6) 相比,显然a好;
  • 在二分法使用中,区间为[2,8],左右区间为[2,5],[5,8],5多了,算法的结果不准,有的人说可以这样写[2,5],[6,8]。是可以,但是在二分的时候还要对数据做处理才能分区间。

参考链接:

https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

https://www.jianshu.com/p/5eaa330788e8

https://www.zhihu.com/question/24883243

猜你喜欢

转载自www.cnblogs.com/benjieqiang/p/11406982.html