为什么python中的range函数要设计为左闭右开区间?

基于Dijkstra观点的解释

为了表示 1,2,3,…,9 这样一个序列,有四种方法

  1. 1 ≤ i < 10(左闭右开区间)
  2. 0 < i ≤ 9(左开右闭区间)
  3. 1 ≤ i ≤ 9(闭区间)
  4. 0 < i < 10(开区间)

   那么我们是否有理由更喜欢其中一种方法呢?答案是肯定的。
   方法一和方法二具有以下优点:他们边界之间的差正好等于序列的长度。并且,在这两种表示方法中,如果我们观察两个相邻的序列,那么其中一个序列的上限正好等于另一个的下限。
   让我们继续分析:自然数是有最小值的(0)。如果像二种和第四种那样,在下界采用 < ,那么当我们想表示一个从0开始的序列,那么下界会出现非自然数-1(比如 0,1,…,5 会被表示成 -1 < i ≤ 5),这种表示法显然不够优雅,所以对下界而言,我们最好选择 ≤。
   再看上界,在下界使用 ≤ 时,序列便可以从最小的自然数0开始,此时,如果我们想要表示空集的话,当上届同样采用 ≤ 时会导致上界小于下届并出现非自然数,如:0 ≤ i ≤ -1 。显然,这也是不够优雅的,也不符合我们的习惯。而如果上界使用 <,就会方便很多,同样,表示空集:0 ≤ i < 0。因此对于上界,我们采用 < 。
   综上所述,Python中的Range函数设计成左闭右开区间是比较优雅的。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值