Есть ли функция в Python, которая генерирует все строки длины n над заданным алфавитом?

Мне нужна функция generateAllStrings(n, alphabet), чтобы сделать что-то вроде этого:

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

Другими словами, generateAllStrings(n, alphabet) должен возвращать все возможные строки длины n над символами в алфавите списка.

Есть ли такая функция в itertools или что-то еще?

Ответ 1

>>> [''.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']