>>> range(1,11)
gives you
[1,2,3,4,5,6,7,8,9,10]
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?
>>> range(1,11)
gives you
[1,2,3,4,5,6,7,8,9,10]
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 equalslen(range(0, 10))
. Remember that programmers prefer 0-based indexing.Also, consider the following common code snippet:
Could you see that if
range()
went up to exactlylen(li)
that this would be problematic? The programmer would need to explicitly subtract 1. This also follows the common trend of programmers preferringfor(int i = 0; i < 10; i++)
overfor(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:
The length of the range is the top value minus the bottom value.
It's very similar to something like:
in a C-style language.
Also like Ruby's range:
However, Ruby recognises that many times you'll want to include the terminal value and offers the alternative syntax: