[Tutor] How to determine if every character in one string is inanother string?

Kent Johnson kent37 at tds.net
Tue Jul 24 04:30:14 CEST 2007


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


More information about the Tutor mailing list