else - python list comprehension if
Anidado para bucles usando comprensiĆ³n de lista (3)
Si tuviera dos cadenas, ''abc''
y ''def''
, podría obtener todas las combinaciones de ellas usando dos bucles for:
for j in s1:
for k in s2:
print(j, k)
Sin embargo, me gustaría poder hacer esto usando la lista de comprensión. Lo intenté de muchas maneras, pero nunca lo logré. ¿Alguien sabe como hacer esto?
Dado que esto es esencialmente un producto cartesiano, también puede usar itertools.product . Creo que es más claro, especialmente cuando tienes más elementos de entrada.
itertools.product(''abc'', ''def'', ''ghi'')
Pruebe la recursión también:
s=""
s1="abc"
s2="def"
def combinations(s,l):
if l==0:
print s
else:
combinations(s+s1[len(s1)-l],l-1)
combinations(s+s2[len(s2)-l],l-1)
combinations(s,len(s1))
Te da las 8 combinaciones:
abc
abf
aec
aef
dbc
dbf
dec
def
lst = [j + k for j in s1 for k in s2]
o
lst = [(j, k) for j in s1 for k in s2]
si quieres tuplas
Como en la pregunta, for j...
es el bucle externo, for k...
es el bucle interno.
Esencialmente, puede tener tantas cláusulas ''para x in y'' independientes como desee en una lista de comprensión simplemente pegándolas una después de la otra.