Why not 1-11?
Did they just decide to do it like that at random or does it have some value I am not seeing?
Because it's more common to call
range(0, 10) which returns
[0,1,2,3,4,5,6,7,8,9] which contains 10 elements which equals
len(range(0, 10)). Remember that programmers prefer 0-based indexing.
Also, consider the following common code snippet:
for i in range(len(li)): pass
Could you see that if
range() went up to exactly
len(li) that this would be problematic? The programmer would need to explicitly subtract 1. This also follows the common trend of programmers preferring
for(int i = 0; i < 10; i++) over
for(int i = 0; i <= 9; i++).
If you are calling range with a start of 1 frequently, you might want to define your own function:
>>> def range1(start, end): ... return range(start, end+1) ... >>> range1(1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Exclusive ranges do have some benefits:
For one thing each item in
range(0,n) is a valid index for lists of length
range(0,n) has a length of
n+1 which an inclusive range would.