python for loop
Gary Herron
gherron at islandtraining.com
Tue Mar 31 21:05:19 EDT 2009
Lada Kugis wrote:
> I'm coming from fortran and c background so I'm certainly biased by
> them. But if you could explain one thing to me:
>
> in fortran for example:
> for i=1,n
> goes from 1,2,3,4,...,n
>
> in python for example:
> for i in range(1,n)
> goes from 1,2,3,4,...,n-1
> (that is, it goes from 1 up to, but not including n)
>
> Why is that so ? What were the reasons for that "not including" part ?
> It troubles me greatly, and I cannot see it's advantages over the
> "standard" "up to and including" n.
>
> Best regards
> Lada
> --
> http://mail.python.org/mailman/listinfo/python-list
>
This debate has been around for decades, in both mathematics and
programming.
Should a loop through n things use indices
1, 2, ..., n
or
0, 1, ..., n-1 ?
Fortran tends to go with the former (1-based indices) , while modern
languages usually go with the latter (0-based indices). (And just for
the record, your range(1,n) seems to be trying to coerce Python from
0-based to 1-based.)
The arguments for each are many, but are often centered around the
prevalence of the proverbial off-by-one error. Here's a nice
explanation of the off-by-one error:
http://en.wikipedia.org/wiki/Off-by-one_error
Google can provide many more.
My personal view is that 0-based loops/indices is *far* more natural,
and the 1-based loops/indices are a *huge* source of off-by-one errors.
But I'm sure others will argue over that point.
Gary Herron
More information about the Python-list
mailing list