Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Generate all permutation of a list (See related posts)

From Michael Davies's recipe.
def all_perms(str):
    if len(str) <=1:
        yield str
    else:
        for perm in all_perms(str[1:]):
            for i in range(len(perm)+1):
                yield perm[:i] + str[0:1] + perm[i:]

Some example usage
>>> for p in all_perms(['a','b','c']):
	print p

['a', 'b', 'c']
['b', 'a', 'c']
['b', 'c', 'a']
['a', 'c', 'b']
['c', 'a', 'b']
['c', 'b', 'a']

A great use of generator and recursive call.

Comments on this post

patrissimo posts on Mar 06, 2006 at 02:54
Thanks, that's just what I was looking for

You need to create an account or log in to post comments to this site.


Click here to browse all 4858 code snippets

Related Posts