2010-06-07 20 views
15

que tienen la siguiente estructura en Python:¿Cómo puedo encontrar todas las combinaciones posibles de una lista de listas (en Python)?

letters = [['a', 'b', 'c'], ['p', 'q', 'r', 's'], ['j', 'k', 'l']] 

Me gustaría encontrar todas las posibles combinaciones de letras en el orden en que existen actualmente. Para el ejemplo anterior sería:

apj 
apk 
apl 
aqj 
aqk 
aql 
... 
csk 
csl 

Esta parece que debería ser una cosa muy simple de hacer, pero no puedo entenderlo.

+0

Podemos suponer que los valores ya están clasificadas dentro de las listas individuales? – wcm

+0

¿Qué versión de Python estás usando? –

+0

@wcm: No, los valores en las listas individuales no están ordenados. –

Respuesta

14

En Python 2.6 o posterior puede utilizar itertools.product:

>>> import itertools 
>>> map(''.join, itertools.product(*letters)) 
apj 
apk 
apl 
aqj 
aqk 
aql 
...etc... 
csk 
csl 
+0

Y en las antiguas pitones, puede copiar la implementación pura de Python de 'product' desde los documentos' itertools'. –

Cuestiones relacionadas