Python "why" questions
Roald de Vries
downaold at gmail.com
Sat Aug 7 06:03:05 EDT 2010
On Aug 7, 2010, at 5:46 AM, Vito 'ZeD' De Tullio wrote:
> Default User wrote:
>
>>> From "the emperor's new clothes" department:
>>
>> 1) Why do Python lists start with element [0], instead of element
>> [1]?
>> "Common sense" would seem to suggest that lists should start with
>> [1].
>
> http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
I think the reason why is just historical; C uses zero-based indices.
In C, an array index is an offset with respect to the pointer that the
array variable actually is, so 0 makes sense (my_array[0] == *my_array).
I'm not convinceed (yet) by Dijkstra's reasoning. *Maybe* if you want
to describe a range with two </<='s, it makes sense. But Python (nor
C, nor ...) uses that notation. I agree with the OP that the first
item in a list would most naturally be called item 1, and therefore
have index 1. (This doesn't mean I'm in favor of 1-based indices)
One of the reasons I like python so much, is that you (almost) never
have to use indices. Normally you just iterate over the elements. If I
ever need indices, it's a strong indication that I actually want a
dictionary.
Cheers, Roald
More information about the Python-list
mailing list