Alan Gauld wrote: > "Michael Sparks" <[EMAIL PROTECTED]> wrote >> >> That's equivalent to the regular expression: >> * ^[0-9A-Za-z_.-]*$ > > While using a dictionary is probably overkill, so is a regex. > A simple string holding all characters and an 'in' test would probably > be both easier to read and faster. Which kind of illustrates the > point of the thread I think! :-) > >> Now, which is clearer? If you learn to read & write regular >> expressions, then >> the short regular expression is the clearest form. It's also >> quicker. > > Whether its quicker will depend on several factors including the > implementation of the regex library as well as the length of the > string. > If its a single char I'd expect the dictionary lookup to be faster > than > a regex parse or the string inclusion test... In fact this is how the > C standard library usually implements functions like toupper() > and tolower() etc, and for speed reasons.
It's been a long time since I looked at the source for a C standard library but I remember these functions being implemented as direct table lookup - a static char* indexed by a character value - not dictionary lookup. If anyone really cares which Python implementation is faster, the timeit module is your friend. Assertions like "would probably be faster" or "it's also quicker" don't hold much weight. In Python, if you want to know what is faster, you must test. Kent, who doesn't have enough time or interest at the present to try timing it himself... _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor