wesley chun wrote:

> from string import printable as prglobal
> def printable(s):
>     prlocal = prglobal
>     for x in s:
>         if x not in prlocal:
>             return False
>     return True
> 
> the solutions using LCs above are great when it comes to an expressive
> piece of code in a one-liner, but i feel there's a waste of
> time/memory.  the use of GEs is better, but it still has to iterate
> over the entire string when i don't feel that it should be necessary
> as per my example. anyway, just my $0.02! not the shortest, but
> hopefully the fastest!

any() and all() also short-circuit, and they move the iteration out of 
Python into the C runtime. My guess is the solutions with any() and 
all() and equivalent hoisting of string.printable will be faster than 
yours, but I don't want to take the time to check ATM...I would also try 
using set(string.printable) instead of string.printable...

Anyone feel like spending some time with timeit? Otherwise we're just 
guessing anyway.

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to