PEP 276 Simple Iterator for ints

James_Althoff at i2.com James_Althoff at i2.com
Thu Nov 29 14:41:18 EST 2001


Bjorn Pettersen wrote:
>> From: Kerim Borchaev [mailto:warkid at storm.ru]
>>
>> Hello James,
>> Thursday, November 29, 2001, 5:18:43 AM, you wrote:
>> Jic> Peter Hansen wrote:
>> >>Or just:
>> >>
>> >>if not 0 <= index < len(mylist):
>> >>    print 'index out of range'
>>
>> Jic> Right.  Which has the added advantage of not repeating index.
>>
>> Why not just _use_ that index on the list to check whether it's valid?
>>
>> try:
>>     mylist[index]
>> except IndexError:
>>     print 'index out of range'
>
>Because a negative index doesn't give an IndexError, and presumably we
>wanted to make sure the list was accessed through a positive index...
>
>-- bjorn

Exactly.

Python's builtin Lists and Tuples are conveniently designed to allow
negative indexing.  But DefaultTableModel in Jython, for example, can only
be accessed using *positive* indicies.  You *could* use the exception
mechanism with DefaultTableModel, but it isn't quite so convenient, e.g.,

    from java.lang import ArrayIndexOutOfBoundsException
    try:
        value = table.getValueAt(i,j)
    except ArraryIndexOutOfBoundsException:
        print 'invalid index'

And with this approach we don't know which index, i or j, is invalid
(without doing even more work).  So there can be cases where one prefers to
do a bounds check ahead of time.

Jim






More information about the Python-list mailing list