11

I need a function generateAllStrings(n, alphabet) to do something like this:

generateAllStrings(4, ['a','b'])
>>> ["aaaa", "aaab", "aaba", "aabb", "abaa", .... , "bbba", "bbbb"]

In other words, generateAllStrings(n, alphabet) should return all the possible strings of length n over the chars in the list alphabet.

Is there such a function in itertools or something?

snakile
  • 50,186
  • 60
  • 164
  • 235

1 Answers1

38
>>> [''.join(i) for i in itertools.product("ab",repeat=4)]
['aaaa', 'aaab', 'aaba', 'aabb', 'abaa', 'abab', 'abba', 'abbb', 'baaa', 'baab', 'baba', 'babb', 'bbaa', 'bbab', 'bbba', 'bbbb']
Kabie
  • 10,108
  • 1
  • 35
  • 44
  • I like this much better than my answer =) – Wipqozn Feb 28 '11 at 12:19
  • 13
    Beautiful: instant +1. A slight addition: instead of brackets for list comprehension, using parenthesis will return an interable instead of a full-fledged pregenerated list. – slezica Feb 28 '11 at 12:48
  • +1 for solution, and +1 to Santiago for the iterable remark --> laziness is beautiful. – Matthieu M. Feb 28 '11 at 13:08