¿Cómo generar todas las cadenas posibles en python?

Mi objective es poder generar todas las cadenas posibles (letras y números) de longitud x y poder activar un bloque de código para cada una. (como un iterador) El único problema es que los de itertools no hacen copias de la letra en la misma cadena. Por ejemplo:

Obtengo “ABC”, “BAC”, “CAB”, etc. en lugar de “AAA”.

¿Alguna sugerencia?

Utilice itertools.product() :

 >>> import itertools >>> map(''.join, itertools.product('ABC', repeat=3)) ['AAA', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC', 'BAA', 'BAB', 'BAC', 'BBA', 'BBB', 'BBC', 'BCA', 'BCB', 'BCC', 'CAA', 'CAB', 'CAC', 'CBA', 'CBB', 'CBC', 'CCA', 'CCB', 'CCC'] 

Tenga en cuenta que crear una lista que contenga todas las combinaciones es muy ineficiente para cadenas más largas; en su lugar, itérelas:

 for string in itertools.imap(''.join, itertools.product('ABC', repeat=3)): print string 

Para obtener todos los caracteres y números use string.uppercase + string.lowercase + string.digits .

Use itertools.product() si desea que las letras se repitan:

 >>> from itertools import product >>> from string import ascii_uppercase >>> for combo in product(ascii_uppercase, repeat=3): ... print ''.join(combo) ... AAA AAB ... ZZY ZZZ 

itertools.combinations() y itertools.permutations() no son las herramientas correctas para su trabajo.