Cita:
Iniciado por Ania_ razpeitia, si bien tu codigo imprime lo que quiero, me gustaria que me explicara q es lo q hace esa línea de codigo
Código Python:
Ver originalprint ' + '.join("X%d%d" % (i+1, j+1) for j in range(m)), "= 1"
principalmente que hace el .join
Código Python:
Ver originalprint ' = 1\n'.join( ' + '.join("X%d%d" % (i+1, j+1) for i in range(m)) for j in range(n) ), "= 1"
print es para imprimir
str.join(list) es metodo que une los elementos de una sucesion de cadenas (sea una lista, o el resultado de una iteracion) colocando entre cada elemento la cadena con la cual se llama a dicho metodo (en este caso
str)
para ser un poco mas claro aqui te dejo un ejemplo:
Código Python:
Ver original>>> ================================ RESTART ================================
>>> lista = ["lunes", "martes"]
>>> print "-".join(lista)
lunes-martes
>>>
para el codigo que coloco razpeita, el primer
.join une todos los elementos colocando la cadena
' = 1\n' en el medio de cada uno de los elementos a unir, sabiendo que
\n cuando se escribe "texto" significa
"Fin de linea" o
"End Of Line" en ingles (en pocas palabras coloca el resto del texto en una linea nueva)
el primer
join trabaja bajo el resultado del segundo
join el cual a su vez su argumento es una funcion iterable.
quizas lo puedas ver mejor de la siguiente manera:
Código Python:
Ver originalm = 3
n = 3
lista1 = []
for x in range(m):
lista2 = []
for y in range(n):
var = "X%s%s" % (y+1, x+1)
lista2.append(var)
lista1.append(" + ".join(lista2))
print " = 1\n".join(lista1) + " = 1\n"
el resultado es el mismo que ejecutar lo que razpeita te coloco:
Código Python:
Ver originalprint ' = 1\n'.join( ' + '.join("X%d%d" % (i+1, j+1) for i in range(m)) for j in range(n) ), "= 1"
como puedes ver el codigo de razpeita te ahorra 9 lineas, pero si no estas acostumbrado a leer ese tipo de codigo te puedes enredar, ya es decisión del programador escribir el codigo de la manera que mas vea conveniente..