py itertools?
Chris Rebert
clp2 at rebertia.com
Sat Dec 19 07:48:22 EST 2009
On Sat, Dec 19, 2009 at 2:54 AM, mattia <gervaz at 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
More information about the Python-list
mailing list