python list index - an easy question

Cameron Simpson cs at zip.com.au
Sun Dec 18 16:56:16 EST 2016


On 18Dec2016 16:21, BartC <bc at freeuk.com> wrote:
>On 18/12/2016 10:59, Paul Götze wrote:
>>there is a nice short article by E. W. Dijkstra about why it makes sense
>>to start numbering at zero (and exclude the upper given bound) while
>>slicing a list. Might give a bit of additional understanding.
>>
>>http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF
>
>(This from somebody who apparently can't use a typewriter?!)
>
>I don't know if the arguments there are that convincing. Both lower 
>bounds of 0 and 1 are useful; some languages will use 0, some 1, and 
>some can have any lower bound.

0 makes a lot of arithmetic simpler if you think of the index as the offset 
from the start of the array/list.

>But a strong argument for using 1 is that in real life things are 
>usually counted from 1 (and measured from 0).

Shrug. Yep. But again, if you visualise the index as an offset (== "measure") 
it is a natural fit.

>Another little anomaly in Python is that when negative indices are used, it 
>suddenly switches to 1-based indexing! Or least, when -index is considered:

Not if you consider it to count from the range end. So range 0:5 (which in 
Python includes indices 0,1,2,3,4); index -1 places you at 5-1 ==> 4, which is 
consistent. Again, this makes a lot of the arithmetic simpler.

See sig quote for another example of a python style range: birth to death.

Cheers,
-- 
Cameron Simpson <cs at zip.com.au>

There's no need to worry about death, it will not happen in your lifetime.
        - Raymond Smullyan


More information about the Python-list mailing list