Raymond> Other than possibly upper and lower, the rest should be skipped Raymond> and left for tests like isdigit(). The tests are faster than Raymond> the usual linear search style of: if char in str.letters. A couple people have claimed that the .is*() string methods are faster than testing a character against a string. I'm sure that's true in some cases, but it seems not to be true for string.ascii_letters. Here are several timeit.py runs, ordered from slowest to fastest. Both situations have a pair of runs, one with a positive test and one with a negative test. Using char in someset: % timeit.py -s 'import string, sets; pset = sets.Set(string.ascii_letters)' "'.' in pset" 100000 loops, best of 3: 4.68 usec per loop % timeit.py -s 'import string, sets; pset = sets.Set(string.ascii_letters)' "'z' in pset" 100000 loops, best of 3: 4.58 usec per loop Using char.isalpha() or char.islower(): % timeit.py -s 'import string' "'z'.islower()" 1000000 loops, best of 3: 0.93 usec per loop % timeit.py -s 'import string' "'.'.islower()" 1000000 loops, best of 3: 0.928 usec per loop % timeit.py -s 'import string' "'z'.isalpha()" 1000000 loops, best of 3: 0.893 usec per loop % timeit.py -s 'import string' "'.'.isalpha()" 1000000 loops, best of 3: 0.96 usec per loop Using char in somestring: % timeit.py -s 'import string; pset = string.ascii_letters' "'z' in pset" 1000000 loops, best of 3: 0.617 usec per loop % timeit.py -s 'import string; pset = string.ascii_letters' "'.' in pset" 1000000 loops, best of 3: 0.747 usec per loop Using char in somedict: % timeit.py -s 'import string; pset = dict(zip(string.ascii_letters,string.ascii_letters))' "'.' in pset" 1000000 loops, best of 3: 0.502 usec per loop % timeit.py -s 'import string; pset = dict(zip(string.ascii_letters,string.ascii_letters))' "'z' in pset" 1000000 loops, best of 3: 0.509 usec per loop The only clear loser is the 'char in set' case, no doubt due to its current Python implementation, however testing a character for membership in a short string seems to be faster than using the .is*() methods to me. Skip
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4