from itertools import product, izip def Cc(s): s = s.lower() for p in product(*[(0,1)]*len(s)): yield ''.join( c.upper() if t else c for t,c in izip(p,s)) print list(Cc("Dan"))
prints:
['dan', 'daN', 'dAn', 'dAN', 'Dan', 'DaN', 'DAn', 'DAN']
source share