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

问题:

>>> range(1,11)

给你

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

为什么不1-11?
他们只是决定随便做这样的事情,还是有一些我看不到的价值?

回答:

因为更常见的是调用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,可能需要定义自己的功能:

>>> range1 = lambda start, end: range(start, end+1)
>>> range1(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why does range(start, end) not include end?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

27 − 19 =