Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/09/2010, 00:33
AxL456
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Urgente porfavor!!!

Cita:
Iniciado por Ania_ Ver Mensaje
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 original
  1. print ' + '.join("X%d%d" % (i+1, j+1) for j in range(m)), "= 1"
principalmente que hace el .join
Código Python:
Ver original
  1. print ' = 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
  1. >>> ================================ RESTART ================================
  2. >>> lista = ["lunes", "martes"]
  3. >>> print "-".join(lista)
  4. lunes-martes
  5. >>>

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 original
  1. m = 3
  2. n = 3
  3. lista1 = []
  4. for x in range(m):
  5.         lista2 = []
  6.         for y in range(n):
  7.                 var = "X%s%s" % (y+1, x+1)
  8.                 lista2.append(var)
  9.         lista1.append(" + ".join(lista2))
  10. print " = 1\n".join(lista1) + " = 1\n"

el resultado es el mismo que ejecutar lo que razpeita te coloco:
Código Python:
Ver original
  1. print ' = 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..