On Sat, Dec 19, 2009 at 2:54 AM, mattia <ger...@gmail.com> wrote: > Hi all, I need to create the permutation of two strings but without > repeat the values, e.g. 'ab' for me is equal to 'ba'. Here is my > solution, but maybe the python library provides something better: > >>>> def mcd(a, b): > ... if b == 0: > ... return a > ... else: > ... return mcd(b, a % b) > ... >>>> def mcm(a, b): > ... return int((a * b) / mcd(a, b)) > ... >>>> s1 = 'abc' >>>> s2 = 'wt' >>>> m = mcm(len(s1), len(s2)) >>>> set(zip(s1*m, s2*m)) > {('a', 'w'), ('a', 't'), ('b', 'w'), ('c', 't'), ('b', 't'), ('c', 'w')} > > Any help?
Surprised you didn't think of the seemingly obvious approach: def permute_chars(one, two): for left in set(one): for right in set(two): yield (left, right) >>> list(permute_chars('abc', 'wt')) [('a', 'w'), ('a', 't'), ('b', 'w'), ('b', 't'), ('c', 'w'), ('c', 't')] Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list