Testing validity of for...in...
__peter__ at web.de
Mon Nov 3 14:04:48 CET 2003
Richard Philips wrote:
> def maxlength(mylist):
> assert isinstance(mylist, list), "A list with strings"
> max = -1
for item in mylist:
> if len(item)>max:
> max = len(item)
> return max
Your implementation makes two implicit tests:
1. Is mylist iterable
2. Do the items in mylist have a length
There is no point in duplicating these tests. On the other hand, if you
really want to accept only strings as items, you should put
assert isinstance(item, basestring), "Sequence item must be a string"
into the for loop. I'm not advocating that because it unnecessarily limits
the generality of the algorithm.
Other unrelated observations:
max is a built-in function, don't use it as a variable name.
-1 is not a length, if you don't want to accept empty lists/sequences, raise
an exception when you encounter one, otherwise return 0.
OK, the last one is only a personal preference...
More information about the Python-list