Python 的 Range 是左开右闭的,而且除了 Python 的 Range,还有各种语言,如 Swift 语言的..
本翻译同时发布于个人博客
原文
Why numbering should start at zero by Dijkstra[extension://bfdogplmndidlpjfhoijckpakkdjkkil/pdf/viewer.html?file=https%3A%2F%2Fwww.cs.utexas.edu%2Fusers%2FEWD%2Fewd08xx%2FEWD831.PDF]
翻译版
为了表示 2,3,...,12 这样一个序列,有四种方法
2 ≤ i < 13(左闭右开区间)
1 < i ≤ 12(左开右闭区间)
2 ≤ i ≤ 12(闭区间)
1 < i < 13(开区间)
其中有没有哪一种是最好的表示法呢?有的。前两种表示法的两端数字的差刚好是序列的长度。而且在这两种的任何一种表示法中,两个相邻子序列的其中一个子序列的上界就是另一个子序列的下界。这只是让我们挑出了前两种,而不能让我们从前两种中选出最好的一种表示法来,让我们继续分析。
注意到自然数是有最小值的。当我们在下界取
那我们再来看看上界,在下界使用≤时,如果我们对上界也使用≤会发生什么呢?考虑一下当我们想要表示一个空集时,比如 0 ≤ i ≤ -1 上界会小于下界。显然,这也是很难令人接受的,太反直觉了。而如果上界使用
有疑问的话,注意一下,0 ≤ i < 0 的含义是,i < 0 && i >= 0,他们之间是逻辑与的关系,所以