为什么 range(start, end) 不包括 end? [复制]

2023-11-21

>>> 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++) over for(int i = 0; i <= 9; i++).

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

>>> def range1(start, end):
...     return range(start, end+1)
...
>>> range1(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 range(start, end) 不包括 end? [复制] 的相关文章

随机推荐