On Mar 27, 1:15 am, Grimsqueaker <[EMAIL PROTECTED]> wrote: > Hi, I'm fairly new to Python and to this list. I have a problem that > is driving me insane, sorry if it seems simple to everyone, I've been > fighting with it for a while. :)) > > I want to take a variable length string and use it as a base for > counting, eg. given the string 'abc' the sequence would be: > > a > b > c > aa > ba > ca > ab > bb > cb > ... > ccc > > Basically I want to find every possible order of every combination. > Its easy if you know how many characters there will be in your string > (use nested for loops), but I am stuck with the variable length > string. I think I have to use a generator but I'm not sure exactly > how. > > Can anyone give me a pointer in the right direction?
def cartesian_product(*args): """Iterates over the Cartesian product of args[0], args[1], ...""" if not args: return elif len(args) == 1: for item in args[0]: yield (item,) else: for item in args[0]: for item2 in cartesian_product(*args[1:]): yield (item,) + item2 def string_cartesian_product(*args): return (''.join(combo) for combo in cartesian_product(*args)) -- http://mail.python.org/mailman/listinfo/python-list