Jason wrote: > On Aug 30, 1:27 am, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: >> On Thu, 30 Aug 2007 17:09:36 +1000, Ben Finney wrote: >>> [EMAIL PROTECTED] writes: >>>> What's with the index() function of lists throwing an exception on not >>>> found? >>> It's letting you know that the item isn't in the list. There's no >>> sensible return value from an "index" function in that condition. >> What about -1? C programmers do this all the time. :-) >> >> Ciao, >> Marc 'BlackJack' Rintsch > > As other people pointed out, C doesn't have exceptions, so a C > programmer must make an in/out parameter to indicate an error, or have > a special return value. In Python, you're most often searching the > list for an object which is in the list, so the lack of the object is > an exceptional condition. You can certain check with the "in" > operator beforehand to avoid the exception. You may also subclass a > list and override the index method, or write a standalone function to > catch the exception and change its value. > > The reason why the exception is more Pythonic is that the return value > is always a guaranteed good index into the list. Any errors > (including calling .index() on a non-list instance that doesn't have > a .index method) are exceptional, and should probably follow a very > different code path. > > Returning -1 is not a good return value to indicate an error. After > all, -1 is a valid index in most Python lists. (Negative numbers > index from the tail of the list.) > > --Jason
Agree in general tho its a bit inconsistent how... "string".find(val) ...can return -1 but .index() cant, though the inconsistency is probably with string since most other areas of the py api raise errors in cases like this. -- http://mail.python.org/mailman/listinfo/python-list