为了账号安全,请及时绑定邮箱和手机立即绑定

为什么范围(开始,结束)不包括结束?

为什么范围(开始,结束)不包括结束?

叮当猫咪 2019-08-16 14:54:51
为什么范围(开始,结束)不包括结束?>>> range(1,11)给你[1,2,3,4,5,6,7,8,9,10]为什么不1-11?他们是否只是随意决定这样做,或者它是否具有一些我没有看到的价值?
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞


因为调用range(0, 10)哪个返回[0,1,2,3,4,5,6,7,8,9]包含10个等于的元素更常见len(range(0, 10))。请记住,程序员更喜欢基于0的索引。


另外,请考虑以下常见代码段:


for i in range(len(li)):

    pass

你能不能看到如果range()真的len(li)那么这会有问题吗?程序员需要显式减1。这也遵循程序员喜欢的共同趋势for(int i = 0; i < 10; i++)了for(int i = 0; i <= 9; i++)。


如果您经常以1开头调用范围,则可能需要定义自己的函数:


>>> def range1(start, end):

...     return range(start, end+1)

...

>>> range1(1, 10)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


查看完整回答
反对 回复 2019-08-16
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

独家系列确实有一些好处:

一方面,每个项目range(0,n)都是长度列表的有效索引n

range(0,n)有一个长度n,而不是n+1包容范围。


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 580 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信